第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表示声明。本回答被网友采纳