我想征求您对“sizeof”使用的意见 它出现在多个源文件中并在同一类型上运行。 例如在我的代码中我需要
sizeof(float) * MY_CONSTANT
在几个地方(例如,用于内存分配或将其传递给 glBufferData() 调用),我正在考虑为此编写一个宏:
#define FLT_TIMES_MY_CONSTANT (sizeof(float)*MY_CONSTANT)
这会给我带来编译速度方面的好处吗?您能想到有什么缺点吗(例如,我需要再添加一个具有该定义的 header 才能包含在所有源代码中)?
问候, 阿尔弗雷德
最佳答案
据我所知,将#define FLT_TIMES_MY_CONSTANT (sizeof(float)*MY_CONSTANT)
定义为宏不会给编译速度带来任何好处,事实上,它可能会稍微减慢编译速度由于预处理。
编译分 4 个阶段/步骤进行:
- 预处理
- 编译
- 组装
- 链接
在预处理阶段,宏被替换为它们所代表的代码。通过定义宏 #define FLT_TIMES_MY_CONSTANT (sizeof(float)*MY_CONSTANT)
,您只需添加一个必须在整个代码中替换的宏,这会增加需要执行的工作。在预处理阶段完成。当然,考虑到这是一个简单的替换,进行此替换的时间可能很短,但您绝对不会看到加速。
在我看来,你不应该为了加速编译而包含宏,而应该为了加速开发而包含宏,因为宏减少了你必须花费重复编写的时间代码。
有关编译阶段的更多信息,这可能是一个值得阅读的好资源:http://placementyogi.com/tutorials/c/c-basics/c-program-compilation-steps
关于c - 多个源中的 sizeof 时间常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41432437/