强制 enum 为 unsigned long 类型

2024-02-11

是否可以强制枚举的基础类型为 unsigned long 类型?谢谢


在 C++11 及更高版本中,您可以明确提及您想要的类型:

enum MyEnumeration: unsigned long {
   /* ... values go here ... */
};

这将允许您显式控制基础类型。

在 C++03 中,无法强制枚举类型具有任何特定的底层实现。引用 C++03 规范,§7.2/5:

枚举的基础类型是整型,它可以表示枚举中定义的所有枚举数值。这是实现定义哪个整型类型用作基础类型对于枚举,除非基础类型不得大于 int,除非枚举数的值不能适合 int 或 unsigned int。如果枚举器列表为空,则基础类型就好像该枚举具有值为 0 的单个枚举器。应用于枚举类型、枚举类型的对象或枚举器的 sizeof() 的值是sizeof() 应用于基础类型。

这是一个相当宽松的条件,它表明您不仅不一定知道该类型,而且因为它是实现定义的,所以无法保证它甚至根本对应于一种基本类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制 enum 为 unsigned long 类型 的相关文章

随机推荐