extern关键字的理解

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在修饰类成员时,还有一个用法表示对象为类所有)

参见
在一个c++源程序文件中,怎么区别static和extern的用法? - 王小军的回答 - 知乎
https://www.zhihu.com/question/265415085/answer/311928979

参考资料:
1. extern关键字详解
2. 深入理解extern用法

发布了92 篇原创文章 · 获赞 127 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/Blateyang/article/details/87858873