#define与C ++中的const

时间:2014-02-21 19:54:34

标签: c++ const c-preprocessor

我有一个理论问题;)。在本书中,我一直在学习C ++(虽然它很棒,只有我的母语,因此标题不会指定任何内容)作者对#defineconst变量进行了比较。他是第二种方法,因为它更适合调试,但他没有谈到的一件事就是内存管理。假设我们有很多常量我们希望定义。当然它可能需要很多内存。说实话,我还在学习,我从来没有需要这么多常数,但是当我知道你可以选择shortintlong之间时,我开始思考也许这几个位在大型程序中有所作为。所以我的问题是:你怎么看待它?

1 个答案:

答案 0 :(得分:5)

  

假设我们有很多常量我们希望定义。当然它可能需要大量的内存

实际上,它可能没有。更聪明的编译器更可能将所有常量直接硬编码到使用它们的表达式中。这样,内存占用量与预处理器宏相同。

如果这种情况不会自动发生,通常有充分的理由。您通常还会发现,在禁用optimisations进行编译时不会发生这种情况,例如“debug mode builds”;对于这样的构建,通常是程序正确性,而不是高性能。

  

当我了解到你可以选择'短','整数'和'长'之间时,我开始想,也许那些几位在大项目中有所作为

在某些情况下,确定。网络传输大量数据,Facebook的数据库等巨大的可扩展性问题......但总的来说,你不想担心这些东西。如果需要,你就会知道。