我知道C中的全局变量有时会有extern关键字。什么是extern变量?宣言是什么样的?它的范围是什么?这与跨源文件共享变量有关,但这是如何工作的?我在哪里用extern?
4 回答

繁花如伊
TA贡献2012条经验 获得超12个赞
extern
变量是在另一个翻译单元中定义的变量的声明(由于sbi用于校正)。这意味着变量的存储空间分配在另一个文件中。
假设你有两个.c
-files test1.c
和test2.c
。如果您在其中定义了一个全局变量int test1_var;
,test1.c
并且您想要访问此变量,test2.c
则必须使用extern int test1_var;
in test2.c
。
完整样本:
$ cat test1.c int test1_var = 5;$ cat test2.c#include <stdio.h>extern int test1_var;int main(void) { printf("test1_var = %d\n", test1_var); return 0;}$ gcc test1.c test2.c -o test $ ./test test1_var = 5

慕桂英3389331
TA贡献2036条经验 获得超8个赞
我喜欢将extern变量视为您对编译器的承诺。
遇到extern时,编译器只能找到它的类型,而不是它“存在”的位置,因此它无法解析引用。
你告诉它,“相信我。在链接时,这个引用将是可解析的。”
- 4 回答
- 0 关注
- 1028 浏览
添加回答
举报
0/150
提交
取消