发表时间:2022-03-25来源:网络
这个问题挺有意思的。
因为C/C++中的声明很多时候都是定义,只是声明而不是定义的情况不多,比如:
通过extern关键字声明外部链接,且无初始化定义函数声明,且无函数体结构体/类声明,且无成员列表既然题目说的是变量,就以extern为例看一下变量的情况。
(感谢评论区C语言律师大大的指证,请自行将下文“全局变量”替换为“文件作用域变量”,“局部变量”替换为“函数/块作用域变量”,谢谢!)
1. 以extern声明的全局变量或局部变量,只声明不定义,且不使用时,是没有为它分配存储空间的。

2. 以extern声明的全局变量或局部变量,只声明不定义,且使用到了,则需要链接。如果其他源文件中没有定义,则出现链接错误;如果有定义,则其空间显示在出现其定义的源文件所编译出的目标文件中。
3. 以extern声明的全局变量或局部变量,声明且定义,是有分配存储空间的。(不符合题主描述的情况)

4. 不加extern的全局变量声明,因为其声明就是定义,所以无编译器优化时是有存储空间的。(不符合题主描述的情况)

5. 不加extern的局部变量声明(同时也是定义),如果不使用,则可能不在栈上分配空间。(不符合题主描述的情况)
gcc似乎没有分配栈上空间给x,因为y是直接从rbp-4开始的。
clang分配了栈上空间,并且初始化为0了。6. 在函数内声明extern,因为extern声明的变量一定是静态存储器(或C++11起可能为线程存储期),所以与1,2相同。
上一篇:中文编程语言的分类
计支宝app下载v3.1.29 安卓版
142.27MB |商务办公
小小优酷最新版下载v5.4.6 安卓官方版
68.11MB |影音播放
艺图语app下载v3.3.4 安卓免费版
34.33MB |系统工具
爱鸽者手机版下载v3.2.9 安卓版
243.57MB |商务办公
一品威客网接单app(一品众包)下载v2.7.1 安卓最新版
55.01MB |商务办公
诸葛找房网官方版下载v4.8.1.1 安卓最新版
66.6MB |生活服务
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游末日餐厅安卓版下载v1.35安卓版
其它手游葫芦侠十楼免费破解版下载v4.4.0.6安卓版
其它手游葫芦侠8楼最新破解版下载v4.4.0.6安卓版
其它手游