全局变量链接行为

Global variable linking behavior

我有两个 .c 文件 1.c2.c 以及一个头文件 3.h

1.c 有一个这样定义的全局变量 int table

2.c 有一个像这样定义的全局变量 extern int table 和 包括 3.h

3.h 已声明 int table

编译器允许这样做吗?如果是,1.c 中的 table 被损坏的可能性有多大(由 2.c)?

我希望我说清楚了。谢谢!

文件1.c声明了一个全局变量int table;.

文件3.h,一旦包含在源文件中,就会声明一个全局变量int table;。它包含在 2.c 中,所以 2.c 现在也声明了一个全局变量 int table;

它们可以正常编译,但您可能会收到一个链接器错误,指出 table 是多重定义的。