为什么不引用变量var?

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)

Sou*_*osh 9

在你的代码中,

 extern int var;
Run Code Online (Sandbox Code Playgroud)

宣言,而不是定义.因此,在完整的翻译单元中,var永远不会定义.因此,当您尝试使用它时(链接值),您的链接器(具体)会抱怨.var

  • @GoogleBot如果你在一些其他翻译单元中定义了你要链接在一起的变量,那么你的链接器将能够找到变量,并且没有问题. (2认同)