(1)在一个文件内声明外部变量。 如果外部变量不在文件开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义之前的函数想引用该外部变量,在应该在引用之前用关键字extern对该变量作“外部变量声明”。











(2) 在多文件的程序中声明外部变量。例如:1.cpp 2.cpp 在一个工程里面,编译的时候是一起编译的。













#ifndef __FILE_2CPP_
#define
__FILE_2CPP_

int c = 1;
#endif

如果按照下面的写法,就不需了extern了。



#include "1.h"
using
namespace
std;

int
main(
int
argc,
char
*
argv[])

...
{
cout << c << endl;
return 0;
}









#ifndef __FILE_1HHH

int c = 1;
#endif

(3)extern “C”
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
答案与分析:
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。
下面是一个标准的写法:














