基本解释: extern 可以置于变量或者函数前, 以标示变量或者函数的定义在别的文件中, 提示编译器遇到此变量和函数时在其他模块中寻找其定义. 此外 extern 也可用来进行链接指定.
也就是说 extern 有两个作用, 第一个, 当它与 "C" 一起连用时, 如: extern "C" void fun(int a, int b); 则告诉编译器在编译 fun 这个函数名时按着 C 的规则去翻译相应的函数名而不是 C++ 的, C++ 的规则在翻译这个函数名时会把 fun 这个名字变得面目全非, 可能是 fun@aBc_int_int#%$ 也可能是别的, 这要看编译器的 "脾气" 了(不同的编译器采用的方法不一样), 为什么这么做呢, 因为 C++ 支持函数的重载啊, 在这里不去过多的论述这个问题, 如果你有兴趣可以去网上搜索, 相信你可以得到满意的解释!
第二, 当 extern 不与 "C" 在一起修饰变量或函数时, 如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字, 其声明的函数和变量可以在本模块活其他模块中使用, 记住它是一个声明不是定义! 也就是说 B 模块 (编译单元) 要是引用模块(编译单元)A 中定义的全局变量或函数时, 它只要包含 A 模块的头文件即可, 在编译阶段, 模块 B 虽然找不到该函数或变量, 但它不会报错, 它会在连接时从模块 A 生成的目标代码中找到此函数.
vc 定义全局变量及 extern 用法 :
全局变量一般这样定义:
1. 在一类的. cpp 中定义 int myInt;
然后再在要用到的地方的. cpp 里 extern int myInt; 这样就可以用了.
2. 在 stdafx.cpp 中加入:
int myInt;
然后在 stdafx.h 中加入:
extern int myInt
这样定义以后无论在什么文件中都是可见的.
来源: http://www.bubuko.com/infodetail-2580874.html