c++ - 枚举未实例化时是否有存储空间?

标签 c++ c enums macros c-preprocessor

如果我不实例化枚举,而只是:

枚举 myEnum {val1 = 0, val2, val3};

我想知道编译器是否会做的就是遍历所有代码并用相应的数字替换 val1、val2 等。这意味着它不会在您完成的程序中为其创建存储空间。实际上,最终结果将是在您编写 val1、val2 等的任何地方替换的常量值?

我不确定“实例化”这个词是否正确。另外,当我说它会遍历您的代码并替换内容时,我并不是说它会将其粘贴到预处理器阶段的宏替换中。谢谢。

最佳答案

枚举的枚举数是纯右值,因此当您在源代码中使用 val1 时,它类似于键入诸如 42 之类的文字;您不会获得左值(它指的是内存中存储实际值的位置)。编译器在程序中为枚举器保留空间没有任何意义,因为根据语言规则永远不会访问这些内存位置。

话又说回来,你的内存真的这么小以至于这很重要吗?

关于c++ - 枚举未实例化时是否有存储空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815817/

相关文章:

c++ - 如何找到项目中定义宏的位置?

c - 在 C 中返回 malloced 指针

c - EOF 在 c 中无法正常工作,打印也很荒谬

c++ - 没有双号

数组的 C++ 构造函数初始值设定项

c - 枚举范围

swift - 通过索引访问字符串枚举

swift - 获得一个通用的枚举属性,而不必匹配每个案例

c++ - kAudioDevicePropertyNominalSampleRate 的 AudioObjectAddPropertyListener

c++ - 如何从核密度估计中获取函数?