枚举存储在哪里?

sam*_*249 4 c assembly enums compilation

在执行以下操作时,我很惊讶没有为 生产任何程序集Enums

在此处输入图片说明

我想也许它会做这样的事情:

Hello:
    .byte 0
Goodbye:
    .byte 1
Run Code Online (Sandbox Code Playgroud)

似乎它只会在分配给 var 时添加值:

在此处输入图片说明

为什么会这样?为什么在声明时不存储“枚举值”(即使我设置了Hello=1)?示例链接:https : //godbolt.org/z/xxnMvq

kod*_*der 7

枚举不是变量,它是一种类型。不同的枚举标签实际上是常量。作为一种类型,它在您的最终二进制文件中不需要空格。

编译器在内部保存一个它们的列表,并用它们代表的常量替换它们的每次使用。

但是,这些值最终会出现在调试信息中(如果生成的话),因此您可以在调试器中使用它们。