全局变量链接行为
Global variable linking behavior
我有两个 .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
是多重定义的。
我有两个 .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
是多重定义的。