http://www.cnblogs.com/luliang/archive/2008/08/21/1272746.html
1 基本解释
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定
2 extern 变量
3 extern 函数
4 extern “C”
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
当包括头文件或声明接口函数时,应加extern "C" { }。
http://blog.youkuaiyun.com/wfwd/archive/2006/05/30/763734.aspx
5 extern声明外部函数和全局变量要注意的
如果一个函数要被其他文件中函数使用,定义时加extern关键字,在没有加extern和static关键字时,一般有的编译器会默认是extern类型的,因此你在其他函数里调用也可以使用。
但是有些编译器以及在一些大型项目里,使用时一般的会将函数的定义放在源文件中不加extern,而将函数的声明放在头文件中,并且显示的声明成extern类型,使用此函数的源文件包含此头文件即可。
全局变量的使用
变量在某一个源文件中声明后,如果在其他源文件中使用,需要在此源文件中加extern关键字重新声明一下。通常做法是这样的,在某源文件中不加extern定义及初始化此变量,用extern显示声明此变量放到头文件中,其他源文件要使用时包含此头文件
http://hi.baidu.com/gamedot/blog/item/45a4122af6c96d92023bf6f5.html