2


1

64ビット整数の列挙

私はgccを使用しています。gccは、私が持っているアーキテクチャ上で32ビット整数として列挙型を実装しています(一般的にはわかりません)。 大きすぎる列挙値を割り当てようとすると、

警告:式の整数オーバーフロー

基になる整数型としてgccに64ビット整数を使用させる方法はありますか? gcc固有の方法は問題ありませんが、移植可能な方法がある場合はさらに優れています。

その質問とは異なり、私はgnu拡張にも興味があります。

2 Answer


1


以下は `-std = c 0x`で動作しますが、` -std = c 98`では動作しません

enum EnumFoo {
    FooSomething = 0x123456789ULL
};

私はこれをテストしました

$ g++ --version
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3


0


1つのオプション:特定のタイプの `static const`メンバーを持つテンプレートクラスを作成します。

例えば、GNUディストリビューション(少なくとも、私が使用しているもの)のc ++ / tr1 / type_traitsで宣言されている `std

tr1 :: integral_constant`。

列挙値の場合:宣言は重要です(たとえば、必要に応じて U、` L`を使用します)