0

私はこの宣言を使用しようとしましたが、Visual Studio 2012 または CodeBlocks (GCC を使用) のどちらでもビルドされません。

( http://netghost.narod.ru/gff2/graphics/summary/fli.htmから)

typedef struct _ColormapChunk
{
  CHUNKHEADER Header;        /* Header for this chunk */
  WORD NumberOfElements;     /* Number of color elements in map */
  struct _ColorElement       /* Color element (one per NumberOfElements) */
  {
   BYTE SkipCount;           /* Color index skip count */
   BYTE ColorCount;          /* Number of colors in this element */
   struct _ColorComponent    /* Color component (one /'ColorCount') */
   {
    BYTE Red;                /* Red component color */
    BYTE Green;              /* Green component color */
    BYTE Blue;               /* Blue component color */
   } ColorComponents[ColorCount];
  } ColorElements[NumberOfElements];
} COLORMAPCHUNK;

Visual Studio: エラー C2327: '_ColormapChunk::_ColorElement::ColorCount': 型名、静的、または列挙子ではありません

CodeBlocks: エラー: 非静的データ メンバ '_ColormapChunk::_ColorElement::ColorCount' の無効な使用

これらの質問については、C++ 11 で可能なことが説明されています。

クラスで非 const 静的メンバーまたは静的配列を初期化できないのはなぜですか?

別のメンバーを宣言するときに、あるメンバーのサイズを使用できますか?

そのため、CodeBlocks でオプションにチェックを入れました:

g++ を C++11 ISO 言語標準に準拠させる [-std=c++11]

VS ではそのようなオプションが見つかりませんでした。CodeBlocks ではまだコンパイルされていません。

この宣言はそのまま使用できますか、それとも変更が必要ですか? もしそうなら、どれですか?

4

1 に答える 1

5

そのドキュメントは、ファイルの形式を記述するC に似た構文です。「可変長」フィールドのため、意図的にコンパイルできません。

于 2013-02-24T16:32:30.613 に答える