extern 的用法:
1.extern一般放在函数名前或者变量前起声明作用,以提示函数或者变量的定义在别的文件中,提示编译器遇到此变量和函数时去其他模块寻找定义。
2.extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++。
注明:用extern声明变量的时候尽量不要定义,这样容易出错,比如在test1.h中声明定义一个变量 extern int i=1;在test.cpp中加test1.h的头文件调用它,是可以的,在test2.cpp中继续加test1.h的头文件调用,则在编译的时候,会把int i定义两次,编译器会报重复定义的错误。只调用一次的话是可以的,
所以在.h中声明,在.cpp中定义的话,这个全局变量可以重复使用。所以只在头文件中声明 extern 和static,const之间的区别: static不可以和extern连用: extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量.
static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面. C++中const修饰的全局常量据有跟static相同的特性,即它们只能作用于本编译模块中,但是const可以与extern连用来声明该常量可以作用于其他编译模块中, 如extern const char g_str[];