1. 基本含义:声明外部对象
声明对象是一个外部对象(变量或函数),标识其定义在别的文件中。会被多个文件使用的对象通常用extern声明于头文件中。
用法eg.
extern int var;
2. extern “c”:链接指示
声明对象是一个外部c语言的对象,告诉编译器在编译该对象时按照指定的c语言编译方式进行编译
用法:
单语句链接指示eg.
extern "c" int strcmp(const char*, const char*);
复合语句链接指示eg.
extern "c"{
int strcmp(const char*, const char*);
char *strcat(char*, const char*);
}
3. extern和static比较
static表示静态的全局对象,分配内存的时候被存储在静态区,而非堆栈区。
extern用来表示文件内的全局对象在其它文件出现,static用来表示文件内的全局对象仅本文件可见,两者用法刚好相反。(static在修饰类成员时,还有一个用法表示对象为类所有)