这个声明在哪个编译器有效?

Ayb*_*ybe 0 c++

我一直在尝试使用此声明,但无论是在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;
Run Code Online (Sandbox Code Playgroud)

Visual Studio:错误C2327:'_ ColorMapChunk :: _ ColorElement :: ColorCount':不是类型名称,静态或枚举器

CodeBlocks:错误:无效使用非静态数据成员'_ColormapChunk :: _ ColorElement :: ColorCount'

在这些问题上,可以解释在C++ 11下是可能的:

为什么我不能在类中初始化非const静态成员或静态数组?

在宣布其他成员时,您可以使用一个成员的大小吗?

所以在CodeBlocks上我勾选了选项:

让g ++遵循C++ 11 ISO语言标准[-std = c ++ 11]

在VS上我找不到这样的选项,在CodeBlocks上它还没有编译.

此声明是否可以使用,还是需要进行一些更改?如果是这样,哪些?

nne*_*neo 5

该文档是一种描述文件格式的类C语法.由于"可变长度"字段,故意不能编译.