c++中的static和extern

看到一个大神写的非常简单明了的回答,特地转载过来
链接:https://www.zhihu.com/question/265415085/answer/293495989

//是说这个变量是存在,但是不在(可能)当前的编译单元,后续链接时会在哪里发现
//大家共用这个全局变量
//如果在链接的时候,没有在任何地方发现这个变量的定义
//即没有不带 extern 的 int x,报链接错误
extern int x; 

//是说这个变量是存在,且只存在当前编译单元,也可以叫它本地全局变量。
//可能多个编译单元都会有这个定义,比如这句写在一个 header 文件中
//多个 source 文件 include 了这个 header 文件
//那么每个 source 文件中都可以使用 x,但是每个 x 是独立存在
//即在 a.cpp 的 x 就是 a_x,在 b.cpp 的 x 就是 b_x。相互不会影响。
static int x; 

------ 如果需要一个全局变量在多个源文件中共用,用 extern

extern.h

extern int x;

然后在某一个源文件中 externX.cpp,定义 x

#include "extern.h" //这个 include 不要也行
int x = 1;

------ 如果需要每个源文件中单独使用一个全局变量,用 static

static.h

static int x;

然后在所有源文件中 staticX.cpp,自由使用 x

#include "static.h"
//use x,只属于每个 cpp 独立的全局变量 x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值