具有64位底层整数的枚举

时间:2010-10-21 18:24:50

标签: c++ gcc enums

我正在使用gcc,它在我拥有的架构上实现了枚举为32位整数(一般不知道)。如果我尝试将枚举值分配得太大,我会得到

warning: integer overflow in expression

有没有办法让gcc使用64位整数作为底层整数类型? gcc的具体方式很好,但如果有一种可移植的方式,那就更好了。

**编辑** 这是一篇相关的帖子:64 bit enum in C++?

与那个问题不同,我也对gnu扩展感兴趣。

2 个答案:

答案 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中声明(至少是我正在使用的那个)。

表示枚举值:您的声明可能很重要(例如,视情况使用UL