我有2 C
文件在下面。从我读的内容来看,我知道全局变量的默认存储类是extern。如果我明确键入它,我得到未定义的变量错误。我在这里错过了什么?这是否意味着当我省略extern关键字时,它就变成了一个定义,但是当我将它只输入一个声明时?C - 为全局变量明确写入extern关键字
file1.c中
#include <stdio.h>
#include <stdlib.h>
extern void file2function();
int variable; // if i put extern i will get error, isnt it implicitly extern?
int main()
{
variable = 1;
printf("file1 %d\n",variable);
file2function();
return 0;
}
file2.c中
#include <stdio.h>
#include <stdlib.h>
extern int variable;
void file2function(){
variable = 2;
printf("file2 %d\n",variable);
return;
}
是的,除非你还提供初始化('extern int variable = 0;')。请参阅http://port70.net/~nsz/c/c11/n1570.html#6.9.2p4。请注意,C++对待它们的方式不同。 – PSkocik
想一想如果你把所有的声明都放在extern中,那么应该在哪里分配存储空间?你无法区分唯一真正的定义。 – Jack
所以我必须省略extern或者使用初始化工具来指出应该在哪里分配存储空间? – Splash