static、extern的用法与区别

  面试被问到了,我稍微总结记录一下。

主要是static和extern全局变量的区别

1.extern可以使变量在不同文件共享;

   static限制了变量的作用域,只能在本文件使用。

   extern和static不能同时修饰一个变量


2.extern是声明变量,最好是在头文件中做声明;

   static是定义变量,一般定义static全局变量时,都把它放在原cpp文件中而不是头文件。


3.全局函数声明默认是extern。


4.函数或变量可以声明多次,但定义只能有一次。


5.如果使用extern在头文件中定义变量,包含此头文件的多个文件编译连接时,会出现该变量被定义多次,因而出错;

   如果使用static在头文件中定义变量,包含此头文件的多个文件编译连接时,不会出现重定义错误,每个编译单元都会有一个独立的属于该变量的存储空间,但由此会对其他编译单元造成不必要的信息污染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值