2 c variables extern variable-declaration
这不是修复或其他问题.只想知道行为
#include <stdio.h>
extern int var;
int main()
{
var = 10;
printf("%d ", var);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这里我们可以看到,var定义为函数extern内部和定义.但是当输出时它出错了main()varvar
未定义的引用
var.
那么价值在10哪里?它会去extern var或存储在垃圾内存位置吗?
那么在编译行var =10和下一行时到底发生了什么.
编译日志:
Compilation error time: 0 memory: 2156 signal:0
/home/PpnviQ/ccRtZapf.o: In function `main':
prog.c:(.text.startup+0x13): undefined reference to `var'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
在你的代码中,
extern int var;
Run Code Online (Sandbox Code Playgroud)
是宣言,而不是定义.因此,在完整的翻译单元中,var永远不会定义.因此,当您尝试使用它时(链接值),您的链接器(具体)会抱怨.var