enum EnumFoo { FooSomething = 0x123456789ULL };
2
1
私はgccを使用しています。gccは、私が持っているアーキテクチャ上で32ビット整数として列挙型を実装しています(一般的にはわかりません)。 大きすぎる列挙値を割り当てようとすると、
警告:式の整数オーバーフロー
基になる整数型としてgccに64ビット整数を使用させる方法はありますか? gcc固有の方法は問題ありませんが、移植可能な方法がある場合はさらに優れています。
編集**これは関連する投稿です: C++の64ビット列挙?
その質問とは異なり、私は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`メンバーを持つテンプレートクラスを作成します。
tr1 :: integral_constant`。
列挙値の場合:宣言は重要です(たとえば、必要に応じて U
、` L`を使用します)