extern int a之间的区别; extern int a = 42;

时间:2011-09-30 12:25:07

标签: c

我正在阅读Use of 'extern' keyword while defining the variable

的答案

其中一位用户以这种方式回答

 extern int a;       //  not a definition 
 extern int a = 42;  //  definition 

我期待两者都不是定义而是声明。我在想这两个语句都说变量是在函数外部定义的,我们必须使用extern关键字来使用它。这是他的错误还是真正的定义? 我知道

extern int a; // variable is already defined but its outside the function
extern int a=42 ; //I guess a variable is assigned a value but not a definition 

但这些陈述

extern int a = 42; // user said its a definition and now i got  confused

请用这些来清除我。

3 个答案:

答案 0 :(得分:7)

每当尝试初始化时,无论使用extern,语句都变为定义。在这种情况下,extern关键字是多余的,因为默认情况下,未标记为static的符号已经具有外部链接。

声明外部变量并在当前编译单元中设置其初始值没有意义,这是一个矛盾。

答案 1 :(得分:5)

extern int a;是一个声明。它没有分配存储空间的空间。

extern int a = 42;是一个定义。它分配空间来存储int值a并为其赋值42.

答案 2 :(得分:0)

这里变量在main()函数内声明,其定义在全局声明部分

之外定义
extern int a; //This is a declaration

extern int a=42; //This is a definition