为什么不引用变量 var?

Why variable var is not referenced?

这不是要解决的问题,或者something.Just想知道行为

#include <stdio.h>
extern int var;
int main()
{
    var = 10;
    printf("%d ", var);
    return 0;
}

这里我们可以看到var被定义为extern并且在main()函数内部给出了var的定义。但是当 var 被输出时,它给出了一个错误

undefined reference to 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

在您的代码中,

 extern int var;

声明,而不是定义。因此,在完整的翻译单元中,从未定义 var 。因此,当您尝试 使用 它时,您的链接器( 具体 )会抱怨(将值分配给 var)。