如果我不实例化枚举,而只是:
枚举 myEnum {val1 = 0, val2, val3};
我想知道编译器是否会做的就是遍历所有代码并用相应的数字替换 val1、val2 等。这意味着它不会在您完成的程序中为其创建存储空间。实际上,最终结果将是在您编写 val1、val2 等的任何地方替换的常量值?
我不确定“实例化”这个词是否正确。另外,当我说它会遍历您的代码并替换内容时,我并不是说它会将其粘贴到预处理器阶段的宏替换中。谢谢。
最佳答案
枚举的枚举数是纯右值,因此当您在源代码中使用 val1
时,它类似于键入诸如 42
之类的文字;您不会获得左值(它指的是内存中存储实际值的位置)。编译器在程序中为枚举器保留空间没有任何意义,因为根据语言规则永远不会访问这些内存位置。
话又说回来,你的内存真的这么小以至于这很重要吗?
关于c++ - 枚举未实例化时是否有存储空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815817/