C++ ISO C&x2B+;禁止在结构中初始化成员

C++ ISO C&x2B+;禁止在结构中初始化成员,c++,c++11,struct,compiler-errors,in-class-initialization,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" }; } 上面的代码在我看来很好

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

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.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() 
{

}
struct回调
{
短频率=9000;
int*MMIO_范围1;
短周期_LN=65535/最新频率;

const char*STATUS_FLAGS[5]=//您使用的编译器是什么?请发布错误输出。最新版本的What?GCC?Clang?MSVC?TC++(请不要)?摆脱零大小数组-使其成为
const char*STATUS_FLAGS[5]
或使用
静态constexpr
并在C++11中编译mode@40two,
std::array
*我已经说过我这样做了,但仍然得到相同的错误。那么您的编译器不支持完整的c++11是的,c++11 GCC 4.6-4.7 MinGW for Windows二进制文件。