2016-09-20 40 views
0

我有两个.c文件1.c2.c和头文件3.h全局变量连接器的行为

1.c有这样 int table

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

3.h已声明int table

编译器允许这个吗?如果是的话,1.ctable有多可能会被破坏(通过2.c)?

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

回答

1

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

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

他们会很好的编译,但是你可能会得到一个链接器错误,说table被多次定义。