为什么不引用变量var?

时间:2016-07-07 15:19:16

标签: c variables extern variable-declaration

这不是修复或其他问题。只想知道行为

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

在这里,我们可以看到var被定义为externmain()函数var内部已定义。但是当输出var时出现了错误

  

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

1 个答案:

答案 0 :(得分:9)

在您的代码中,

 extern int var;

声明 ,而不是定义。因此,在完整的翻译单元中,永远不会定义var。因此,当您尝试使用时,您的链接器(是特定的)会抱怨,(将值赋给var)。