前两天被同学问起extern的用法,才发现自己对extern的用法也不清晰,囧,整理一下。
参考链接
extern
extern用于多文件编程时,不同源文件之间共享变量。我们在头文件中声明外部变量,这样所有包含该头文件的的源文件就都有了这个外部变量的声明,而我们只需要在其中一个源文件中定义一次。
extern int x
告诉编译器有一个叫x
的int
型变量在某个地方,正如之前C语言编译连接过程里说的那样,此时编译器并不关心x
的具体实现,即不关心x
定义在哪个源文件中。编译器只需要知道这个变量的类型和名字,就知道了该如何使用它。编译完成生成之后,链接器会将所有引用x
的地方定向到定义它的某一个源文件中。
为了使上述过程顺利进行,x
必须要在某个源文件中被定义为全局变量,并且不能包含static
关键字。
例子
print.h
1 |
|
print.c
1 |
|
main.c
1 |
|