c - 枚举存储在哪里?

标签 c assembly enums compilation

在执行以下操作时,我很惊讶没有为 Enums 生成任何组件。 :
enter image description here
我想也许它会做这样的事情:

Hello:
    .byte 0
Goodbye:
    .byte 1
似乎它只会在分配给 var 时添加值:
enter image description here
为什么会这样?为什么在声明时不存储“枚举值”(即使我设置了 Hello=1 )?示例链接:https://godbolt.org/z/xxnMvq .

最佳答案

枚举不是变量,它是一种类型。不同的枚举标签实际上是常量。
作为一种类型,它在您的最终二进制文件中不需要空格。
编译器在内部保存一个它们的列表,并用它们代表的常量替换它们的每次使用。
但是,这些值最终会出现在调试信息中(如果生成的话),因此您可以在调试器中使用它们。

关于c - 枚举存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65640837/

相关文章:

c++ - 如何将 C 函数调用转换为 C++ 兼容语法?

assembly - 代码段和数据段背后的基本原理

c - STM32 Bare Metal C - 无法让 LED 工作

python - C/C++ 中的 DNS 解析

汇编:add指令和操作符add的区别

assembly - 使用 int 21h 和 ah = 2Ch 的延迟程序

swift - 如何在 Swift 中使用保留关键字作为类型名称声明和初始化嵌套枚举?

swift - API调用swift中的可选变量

javascript - Closure Compiler 并不总是内联枚举。为什么?

c - int* number_1 和 int *number_1 一样吗?