为什么不引用变量 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
)。
这不是要解决的问题,或者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
)。