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 下是可能的:

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

声明另一个成员时可以使用一个成员的大小吗?

所以在 CodeBlocks 我勾选了这个选项:

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

在 VS 上我找不到这样的选项,在 CodeBlocks 上它仍然没有编译。

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

4

1 回答 1

5

该文档是描述文件格式的类 C语法。由于“可变长度”字段,它故意不可编译。

于 2013-02-24T16:32:30.613 回答