0
我有两个.c文件1.c
和2.c
和头文件3.h
全局变量连接器的行为
1.c
有这样 int table
2.c
定义的全局变量全局变量这样extern int table
和 定义包括3.h
3.h
已声明int table
。
编译器允许这个吗?如果是的话,1.c
中table
有多可能会被破坏(通过2.c)?
我希望我自己清楚。谢谢!
我有两个.c文件1.c
和2.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
被多次定义。