ISO c++禁止在结构体中初始化成员



我正在编写一个仿真器,并决定在结构体中控制输入/输出仿真:

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

上面的代码对我来说看起来很好,似乎遵守了所有的规则…但是我得到了上面标题所述的错误信息。我四处搜索了一下,人们说这个错误意味着不同的东西……但它是什么呢?

问题指向"LastFrequency"

两件事:添加一个5和一个;

还有:确保使用-std=c++11(或-std=c++0x对于旧的g++版本,或您选择的编译器的等效选项)进行编译,因为类内初始化器是c++ 11的特性

大警告:此代码不支持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() 
{
}
<<p> 生活例子/strong>。

相关内容

  • 没有找到相关文章

最新更新