c++ - const 使用的内存通常比#define 多还是少?

标签 c++ c embedded constants

我了解每种方法的工作原理,但我很好奇其中一种实际上在内存方面是否更有效。 #define 似乎一直在嵌入式 C 世界中使用,但我想知道它在大多数情况下是否真的有理由超过 const。

如果一个比另一个更有效,有没有人有办法测试和证明这一点?

最佳答案

让我们把 #define 放在一边,因为它并不真正存在于您的程序中。预处理器获取您的宏并在编译器发现它们之前展开它们。

以下来源:

#define X 42
printf("%d", X);

实际上是以下程序:

printf("%d", 42);

所以你要问的是,它占用的内存是否多于或少于:

const int x = 42;
printf("%d", x);

这是一个我们无法笼统地完全回答的问题。

一方面,值 42 需要存在于您的程序某处,否则执行它的计算机将不知道该做什么。

另一方面,它既可以在您的程序中进行硬编码,经过优化,也可以在运行时安装到内存中,然后再次取出。

无论哪种方式,它都需要 32 位(它可能不是 32 位)并且您如何将它引入您的程序并不重要。

任何进一步的分析都取决于准确地您对值的处理方式。

关于c++ - const 使用的内存通常比#define 多还是少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627547/

相关文章:

c - 为什么调用 vprintf 或类似函数两次不起作用甚至出现段错误?

c - C的python中是否有等效于 "in"关键字的关键字

c++ - 与教授一起衡量绩效

c - AT91sam7x 256 : Interrupt just run once

windows - 通过批处理或类似方式在Windows嵌入式标准上设置互联网时间服务器

c - RL_ARM的TCP模式下close和abort的区别

c++ - 结构体(数组)中出现次数最多的数字

C++ 对象 block 分配与单独分配

c++ - 我们什么时候必须使用复制构造函数?

c++ - 字符串到字符数组不起作用