2010-11-21 9 views
2

Eclipse、LinuxでC++プロジェクトをコンパイルしています。EclipseのEnum宣言

プロジェクトは過去にWindowsでコンパイルされました。

は、私はこのような列挙型の私の宣言を持っている:

enum nameofenum:UINT32 
{ 
    one=0, 
    two=1 
} 

結果は日食でエラーです。

  1. :UINT32の意味はなんですか?
  2. この宣言をLinuxに切り替えるにはどうすればよいですか?

ありがとう!!

+0

コードを選択してCtrl + Kを押してコードをフォーマットしてください。プレビューを使用してください! – EboMike

答えて

4

これはstrongly typed enumのように見えますが、これはC++ 0x機能です。基本的に列挙型の基になる型を指定するので、onetwoUINT32になります。

コンパイルするには、C++ 0x言語のこの特定の部分をサポートするコンパイラが必要です。私はGCC 4.4Visual C++が強く型付けされたenumをある程度サポートしていると信じています。

2

: UINT32は列挙型の基になる型を宣言します。それは列挙がUINT32によって表されることを意味します。

これはC++ 0xで強く型付けされた列挙型と呼ばれる新しいC++機能です。 Visual C++は少なくともVisual C++ 2005以降、これをサポートしています。あなたが使っているg ++のバージョンはそれをサポートしていないかもしれません。

g ++でどのように動作するかは、依存しています。特定の基底型に依存するコードがない場合は、それを削除するだけです。特定の基底型に依存するコードを使用している場合は、列挙型の使用を基になる型に置き換えることを検討してください(nameofenumではなくUINT32を使用してください)。しかし、これはあまりいいことではありません。

0
  1. UINT32は符号なし32ビット整数なので、enumは4バイトのintで表されます。
  2. です。私は正確にはわかりませんが、実際に32ビットintとしてこの列挙型を使用する必要がありますか?あなたはちょうどこれを避けることができるかもしれません:UINT32宣言?
0

: UINTは、列挙識別子の基になる型がUINTであることを意味します。 hereと記載されているMicrosoftの拡張機能です。コンパイルするには: UINTを削除してください。

関連する問題