现在的位置: 首页 > 综合 > 正文

c语言extern详解

2017年10月26日 ⁄ 综合 ⁄ 共 725字 ⁄ 字号 评论关闭

(1)变量

extern int a;//声明一个全局变量a
int a; //定义一个全局变量a

extern int a =0 ;//定义一个全局变量a 并给初值。
int a =0;//定义一个全局变量a,并给初值,

        定义只能出现在一处。不管是int a;还是extern int a=0;还是int a=0;都只能出现一次,而那个extern int a可以出现很多次。当你要引用一个全局变量的时候,你就要声明,extern int a;这时候extern不能省略,因为省略了,就变成int a;这是一个定义,不是声明。

(2)函数
       
由于函数的定义和声明是有区别的,定义函数要有函数体,声明函数没有函数体,所以函数定义和声明时都可以将extern省略掉。
    比如:

int fun(void)
{
return 0;
}

定义一个全局函数

int fun(void);
我们对它做了个声明,然后后面就可以用了
加不加extern都一样
我们也可以把对fun的声明 放在一个头文件里,最后变成这样

int fun(void);//函数声明,所以省略了extern,完整些是extern int fun(void);

一个要使用你的fun()的程序,把这个头文件包含进去,就可以使用这个fun()函数了。
但是,对应的,如果是这个程序要使用全局变量,那么要extern 某某变量;不然就成了定义了。

总结下:

对变量而言,如果你想在本源文件中使用另一个源文件的变量,就需要在使用前用extern声明该变量,或者在头文件中用extern声明该变量;

对函数而言,如果你想在本源文件中使用另一个源文件的函数,就需要在使用前用声明该变量,声明函数加不加extern都没关系,所以在头文件中函数可以不用加extern。

 

 

 

抱歉!评论已关闭.