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用法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值