Ada 编程/属性/'Enum Rep
外观
此语言特性在 Ada 2022 中引入。 User_Enum_Type'Enum_Rep(Instance);
其中 User_Enum_Type
是一个 枚举类型,而 Instance
是该类型的一个实例,将返回该枚举实例的底层表示。枚举的默认表示基于其位置(从零开始)。但是,Ada 提供了语言设施来独立于位置指定表示。Enum_Rep 允许您检索该表示。通常情况下,在 Ada 中,枚举是它们自己的类型,表示并不重要。但是,出于跨语言兼容性和在嵌入式编程中可能使用的目的,可以操纵表示。虽然核心语言允许您更改表示,但它没有提供用于检索表示的便捷属性。此扩展属性解决了这一需求。使用它需要您知道用于支持枚举的底层类型,因为 Enum_Rep
返回该类型。通常情况下,标准类型 Integer 就足够了。
请注意,此属性现在是 Ada 2022 的标准属性。在早期的 Ada 版本中,它在 GNAT 中可用,作为一个实现定义的属性,但获取内部表示的标准且可移植的方法是使用 Unchecked_Conversion 的实例。
type
Enum_Typeis
(Enum1, Enum2, Enum3); Enum_Val : Enum_Type := Enum1;
pragma
Assert (Enum_Type'Enum_Rep(Enum_Val) = 0); -- OK
- 13.4:枚举表示子句 [注释]
- 附录 K:语言定义的属性 [注释]