据我所知,这在C中是合法的:
foo.c
struct foo {
int a;
};
bar.c
struct foo {
char a;
};
但是同样的事情对于函数来说是非法的:
foo.c
int foo() {
return 1;
}
bar.c
int foo() {
return 0;
}
并将导致链接错误(函数foo
的多个定义)。
为什么会这样呢?结构名称和函数名称之间的区别是什么使得C不能处理其中一个而不能处理另一个?此外,此行为是否扩展到C++?
https://stackoverflow.com/questions/50590782
复制相似问题