gpt4 book ai didi

c++ - 现代编译器中的 const 与 #define

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:04 25 4
gpt4 key购买 nike

我读过几篇文章说 #define 不占用任何内存,但工作中的一位同事非常坚持现代编译器在它出现时没有任何差异const int/strings.

#define STD_VEC_HINT 6;
const int stdVecHint = 6;

对话的产生是因为一段旧的代码正在现代化,它处理加密,其 key 作为#define。

我一直认为一个变量最终会得到一个内存地址来显示它的内容,但也许在 release 下编译会删除这些东西。

最佳答案

好的编译器不会为可以省略的 const 变量分配空间。在 C++ 中,模块范围内的 const 变量在可见性方面也是隐式静态的,因此编译器也更容易优化变量。 GCC 的链接时间优化功能也有助于进行跨模块优化。

不要忘记一个更重要的事实,即 const 变量具有适当的作用域和类型安全性,这是 #define 所缺少的。

关于c++ - 现代编译器中的 const 与 #define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547916/

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