ISO C ++禁止在结构中进行成员初始化

时间:2014-07-28 19:09:42

标签: c++ c++11 struct compiler-errors in-class-initialization

我正在编写模拟器并决定在结构中控制输入/输出仿真:

struct callbacks
{
short LastFrequency = 9000;
 int *MMIO_RANGE1;
 short Cycle_LN = 65535 / LastFrequency;
 const char *STATUS_FLAGS[] =
 {
   "ACK",
   "NO_VIB",
   "DATA",
   "BYTEPACK",
   "WORDPACK"
 };
}

上面的代码看起来很好,似乎遵守所有规则......但我收到上面标题中所述的错误消息。我四处搜索,人们说错误意味着不同的东西......但是它是什么?

问题指向“LastFrequency”。

1 个答案:

答案 0 :(得分:4)

两件事:添加5;

另外:确保使用-std=c++11编译(或-std=c++0x用于较旧的g ++版本,或选择的编译器的等效选项),因为类内初始值设定项是C + +11功能

BIG警告:此代码为NOT supported by gcc 4.6,需要gcc> = 4.7.3

struct callbacks
{
short LastFrequency = 9000;
 int *MMIO_RANGE1;
 short Cycle_LN = 65535 / LastFrequency;
 const char *STATUS_FLAGS[5] = // <-- 5 here
 {
   "ACK",
   "NO_VIB",
   "DATA",
   "BYTEPACK",
   "WORDPACK"
 };
}; // <-- ; here

int main() 
{

}

Live Example