吾解 extern

来源:互联网 发布:云计算课程大纲 编辑:程序博客网 时间:2024/05/17 06:15

在函数中

void d(){     ....    extern int a = 15;     .... }

或代码块中

{     ......     extern int a = 15;      ...... } 

在编译的过程中都会出错

error : a has both ‘extren ’ and initializer

但将代码改为

{     ......     extern int a ;    a= 15;      ...... } 

编译就可以通过

原因:
变量的定义和声明
extern int a ; // 变量的声明 a,
当声明变量a以后,代码块便可以使用全局变量 a ;
extern int a=15 ; // 声明和定义a
就会对a定义多次

而声明可以多次,定义却只能有一次。
在代码块中使用extern , 表明a 的链接属性是 external , 而 代码块中的变量是局部变量,是没有链接属性,所以,在代码块中使用extern ,其实是对全局变量a 的一次声明,在其他地方已经对 a 进行定义 ,extern int a=15 会造成a 的多次定义。extern 和 赋值不能同时进行。

1 0
原创粉丝点击