如果c语言sa.c和sb.c文件中同时使用extern int a,并且同时包含对方的.h文件,那到底谁
时间: 2024-04-03 11:35:56 浏览: 151
详解C 语言项目中.h文件和.c文件的关系
会定义变量a呢?
在这种情况下,a的定义将取决于链接器的工作方式。如果链接器将sa.o和sb.o文件链接在一起,它将在链接时发现两个对a的定义,并报告重复定义错误。如果链接器将这两个文件分别链接到不同的可执行文件中,则每个可执行文件将具有自己的a变量的定义。
为了避免这种情况,通常建议将extern声明放在头文件中,将变量定义放在一个C文件中,并在其他C文件中包含该头文件。这样,每个C文件中只有一个变量定义,链接器就不会报重复定义错误了。
阅读全文