C语言中 extern 的用法,最好有示例,概念少说点

请讲一下在头文件方面的使用
2024-12-18 01:47:40
推荐回答(2个)
回答1:

extern我用了几次,主要是声明外部变量的作用,我用的也是在头文件中。比如说,你有一个project.c,lib.c,lib.h,三个文件,在lib.h里面有lib.c的变量定义,比如a[4]数组,也就是说这个变量是lib.c的全局变量,当我在project.c文件中要用到的时候,即使a【4】是全局变量,但是也只是在它本文件里面有用,别的文件没法用。但这时project.c要用怎么办呢?在project.c里面改用extern 声明a【4】,他会自动找到别的文件里面的a【4】,这也是为什么如果一个文件有全局变量或者是函数只在本文件里面用的时候要加上static,就是为了防止被别的文件extern声明给弄过去了。extern声明是不分配内存的,只在别的文件中找有没有定义。我做过这样的实验,在文件project.c里面用extern声明a【4】,同时又在lib.c里面extern声明a【4】,这导致在链接的时候提示错误,说没有找到a【4】。所以总的来说extern就是用来使用 别的地方的变量的。

回答2:

extern 用于扩展定义的全局变量的作用域,一般定义的全局变量的作用域为定义的位置起到函数结束,当要在定义全局变量的位置之前或其他源文件中引用该全局变量时,就需要在使用的函数中或源文件中用extern来扩展该全局变量的作用域,如:
#include
main()
{int num(int x);
int b=3,c;
c=num(b);
printf("%d",c);
}
int num(int x)
{extern int a;
int y;
y=a+x;
return y;
}
int a=2;
另外同理如果在定义函数时,在函数的首部的最左端加extern,则此函数是外部函数,可供其它文件调用。