【发布时间】:2021-01-09 08:48:09
【问题描述】:
在执行以下操作时,我很惊讶没有为 Enums 生成程序集:
我想也许它会做这样的事情:
Hello:
.byte 0
Goodbye:
.byte 1
它似乎只在分配给 var 时添加值:
为什么会这样?为什么声明时不存储“枚举值”(即使我设置了Hello=1)?示例链接:https://godbolt.org/z/xxnMvq。
【问题讨论】:
-
它们存储在编译器的数据集中,因此可以在程序的其他地方使用。
enum { Hello, Goodbye }定义值,而不是变量。然后,1用于标签c: -
它们没有被存储;它们是编译器级别可用的常量,只要在语句中使用它们就可以简单地转换为整数。
-
如果你已经完成了
enum {Hi, Bye} greeting;那么greeting将是一个枚举类型的变量。
标签: c assembly enums compilation