我理解extern变量只是声明通知编译器存在变量并且可以在任何地方定义。我的问题是声明和定义都可以出现在同一个文件中吗?
的main.c
extern int var;
int var = 10;
答案 0 :(得分:1)
当您包含一个标题时,该文件实际上已复制到您的源文件中(在预处理之后)。这意味着如果extern声明位于源包含的头文件中,则基本上总是这样做。
答案 1 :(得分:1)
你可以这样做,但没有意义,因为变量的声明具有相同的目的。 extern
应放入头文件并包含在此.c文件中,以便编译器可以检查您告诉其余程序的类型是否与变量的实际类型相匹配。您可以在其他想要引用变量的.c文件中包含标头。请注意,声明变量的.c文件并不一定非常需要查看extern
,但最佳做法是确保类型一致。
我记得有人声明变量的代码:
char error_ message[1024];
在一个.c文件中,然后执行:
extern char *error_message;
在另一个.c文件中。这个编译和链接很好,但在访问变量时崩溃了。如果extern
在声明中可见,则编译器会抱怨类型不匹配。