gpt4 book ai didi

c - 多个源中的 sizeof 时间常数

转载 作者:行者123 更新时间:2023-11-30 18:49:56 24 4
gpt4 key购买 nike

我想征求您对“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 个阶段/步骤进行:

  1. 预处理
  2. 编译
  3. 组装
  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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com