extern
extern
和 static
不能同时出现
extern 放在变量之前
标示变量定义在别处
看看如下的声明和定义:
extern int a; /* 声明一个全局变量 a */
int a; /* 定义一个全局变量 a */
extern int a = 0; /* 定义一个全局变量 a 并赋初值 */
int a = 0; /* 定义一个全局变量 a 并赋初值 */
extern int a = 0;
和 int a = 0;
的作用是相同的
定义只能出现一次,声明可出现多次,所以只有 extern int a;
可出现多次
extern
用在变量声明中常常有这样一个作用:
在 *.c
文件中定义了一个全局的变量,这个全局的变量如果要被引用,
就放在 *.h
中并用 extern
来声明
extern 放在函数之前
void mwum(void);
extern void mwum(void);
对于以上两条语句,效果是一样的
extern
是用来告诉编译器函数定义是在别处,这里只是声明。
但是对于函数来说,如果函数没有写函数体而是直接跟了一个 ;
,
那么编译器就知道这是个声明,反观变量是不一样的,所以对于函数来说 extern
是默认的
在头文件中的声明一般不加 extern