全局变量链接行为

时间:2016-09-20 10:29:20

标签: c global-variables extern

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

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

2.c有一个全局变量,定义如此extern int table和  包括3.h

3.h已声明int table

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

我希望我清楚自己。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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