我正在使用gcc,它在我拥有的架构上实现了枚举为32位整数(一般不知道)。如果我尝试将枚举值分配得太大,我会得到
warning: integer overflow in expression
有没有办法让gcc使用64位整数作为底层整数类型? gcc的具体方式很好,但如果有一种可移植的方式,那就更好了。
**编辑** 这是一篇相关的帖子:64 bit enum in C++?
与那个问题不同,我也对gnu扩展感兴趣。
答案 0 :(得分:1)
以下内容适用于-std=c++0x
,但不适用于-std=c++98
enum EnumFoo {
FooSomething = 0x123456789ULL
};
我用
测试了这个$ g++ --version
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3
答案 1 :(得分:0)
一个选项:创建一个模板类,其中包含特定类型的static const
成员。
例如std::tr1::integral_constant
,在GNU发行版中的c ++ / tr1 / type_traits中声明(至少是我正在使用的那个)。
表示枚举值:您的声明可能很重要(例如,视情况使用U
,L
)