C语言中全局变量说明符extern该如何使用?

如题所述

    在C语言中,extern是全局变量声明的关键字
    只要声明全局变量就默认 前面加extern(程序员可以不加,但编译器默认加上)

    若本文件 引用别的文件中的全局变量  一定要加上extern 声明一下,如

    在file1.c中定义的全局变量,file2.c中想要使用该变量,即使include了头文件,但是如果没有extern关键字来声明的话,在file2.c中是无法访问到的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-28
  如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
  extern int f(); 和int f();
  当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,比较习惯在所有的函数声明前添加extern修饰。
第2个回答  2012-11-25
不在当前文件中定义,也不在当前文件所直接和间接include的文件中定义,在同个工程的其他文件中定义,但需要在当前文件中使用的变量。就需要使用extern。如果没有使用extern,就告诉编译器,这里是在新定义一个变量,需要新开辟内存。而如何使用了extern,就告诉编译器,这里使用的是别的地方已经定义好的变量,不必新开内存。
第3个回答  2012-11-25
函数或变量用extern关键字声明后,编译器将从其他cpp文件寻找它的定义。注意VC2008不支持这一点,必须用在头文件中声明变量或函数然后通过包含通过包含头文件使用。
extern int a;//声明外部变量
extern int a=10;//编译器忽略extern,当成是定义一个变量a。
第4个回答  2012-11-25
函数和变量都有声明和定义两个写法。声明的目的是告诉别的代码这个变量的名称,而定义比声明多了一个功能,除了告知名称以外,还会为这个变量分配内存。
对于函数来说,加不加extern都没有关系,因为有函数体一定是定义,加extern也会被忽略,而没有函数体的就是声明,
int add(int a, int b); 等价于 extern int add(int a, int b);
int add(int a, int b) { return a + b; } 等价于 extern int add(int a, int b) {return a+b;}
如果是变量的话
int a; // 定义了一个变量a
extern int a; // 声明了一个变量a
变量可以有任意个声明,但是只能有一个定义,全局变量定义在多个文件中,只能有一个文件中的不加extern,其余的都必须加extern表示声明。本回答被网友采纳
相似回答