extern变量调用报错

来源:互联网 发布:php冒泡排序法从大到小 编辑:程序博客网 时间:2024/05/22 14:34

前一段时间在应用extern变量时报错,今天花点时间来理清一下

extern 的功能很多,我想今天先理清一个问题,那就是extern 变量的声明和定义之间的关系。 

extern 可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其它模块中寻找其他定义。另外extern 也可以用来进行链接指定。

extern定义变量

1.使用extern 声明全局变量或函数时,一定要注意所有声明的变量或函数必须在且仅在一个源文件中实现定义。如:extern int a;//只是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现链接错误。

2.extern对变量的定义和声明

变量: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;这时候不能省略,因为省略就变成int a;这是一个定义,不是声明

 

总结:

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

0 0
原创粉丝点击