c - sizeof() 语句是在编译时还是运行时评估的?
问题描述
有类似的东西会浪费内存吗
static const char size = sizeof(struct MyStruct);
如果它们在编译时被评估,那就像在做;
static const char size = 10;
functioncall(size);
functioncall2(size);
哪个更优化:
#define STRUCTSIZE sizeof(struct MyStruct)
或者
static const char size = sizeof(struct MyStruct);
如果在编译时评估 sizeof,这会在运行时为恒定值分配额外的内存。如果在编译时评估它,我还不如使用宏来提高内存效率。但是,如果在运行时评估它们,则此变量将节省处理能力,因为它不必在我使用它时一遍又一遍地评估它。所以。sizeof 语句是在编译时还是运行时评估的?
解决方案
在 C 中,sizeof() 语句是在编译时还是运行时评估的?
通常是的。但是,当应用于可变长度数组时,它会在运行时进行评估。否则根本不计算操作数表达式,仅使用表达式的类型来确定结果。
在这种情况下,使用宏代替变量没有任何好处。请注意,使用该变量也不是必需的,并且可能会混淆程序。然而,这主要是风格问题。
推荐阅读
- ios - 检查当前设备是否在扩展中有缺口
- pandas - 如何规范化熊猫多索引数据框?
- c++ - 如何从qt中的另一个类调用函数?
- r - Cairo 无法在 Mac 上的 RStudio 中加载
- python - Django 应用程序适用于本地主机,但不适用于 Heroku
- api - 使用 Flutter 将带有图像的数据发送(发布)到 RestFull API
- docker - 在生产模式下,phpmyadmin 在由 Ngnix 提供服务时找不到静态文件
- r - 在 statnet 中绘制带有 GPS 坐标的网络
- php - phpspreadsheet 中的 INDEX 函数
- .net - 如何使用 TFS 2015 / VS 2017 将通用测试与测试用例相关联?