数组初始化中的未知错误:非整数类型`const unsigned char [256]'的静态数据成员的类内初始化无效

Fac*_*con 3 c++ arrays gcc syntax-error

我试图制作一个Intel 8080 CPU仿真器(然后我想仿效使用它的Space Invaders).

我编写这个CPU几乎完全实现(感谢MAME和痒感项目(大部分);)),除了undocument指令(0x08时,0x10的,为0x18,0x20的,0×28,为0x30,0x38,0x0CB,0x0D9,0x0DD,0x0ED,0x0FD).

编译时我只有问题,我不知道为什么.

这是代码:

static const unsigned char cycles_table[256] =
{
    /*                       8080's Cycles Table                         */
    /*     0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F */
    /*0*/  4, 10,  7,  5,  5,  5,  7,  4,  0, 10,  7,  5,  5,  5,  7,  4,
    /*1*/  0, 10,  7,  5,  5,  5,  7,  4,  0, 10,  7,  5,  5,  5,  7,  4,
    /*2*/  0, 10, 16,  5,  5,  5,  7,  4,  0, 10, 16,  5,  5,  5,  7,  4,
    /*3*/  0, 10, 13,  5, 10, 10, 10,  4,  0, 10, 13,  5,  5,  5,  7,  4,
    /*4*/  5,  5,  5,  5,  5,  5,  7,  5,  5,  5,  5,  5,  5,  5,  7,  5,
    /*5*/  5,  5,  5,  5,  5,  5,  7,  5,  5,  5,  5,  5,  5,  5,  7,  5,
    /*6*/  5,  5,  5,  5,  5,  5,  7,  5,  5,  5,  5,  5,  5,  5,  7,  5,
    /*7*/  7,  7,  7,  7,  7,  7,  7,  7,  5,  5,  5,  5,  5,  5,  7,  5,
    /*8*/  4,  4,  4,  4,  4,  4,  7,  4,  4,  4,  4,  4,  4,  4,  7,  4,
    /*9*/  4,  4,  4,  4,  4,  4,  7,  4,  4,  4,  4,  4,  4,  4,  7,  4,
    /*A*/  4,  4,  4,  4,  4,  4,  7,  4,  4,  4,  4,  4,  4,  4,  7,  4,
    /*B*/  4,  4,  4,  4,  4,  4,  7,  4,  4,  4,  4,  4,  4,  4,  7,  4,
    /*C*/  5, 10, 10, 10, 11, 11,  7, 11,  5, 10, 10,  0, 11, 17,  7, 11,
    /*D*/  5, 10, 10, 10, 11, 11,  7, 11,  5,  0, 10, 10, 11,  0,  7, 11,
    /*E*/  5, 10, 10, 18, 11, 11,  7, 11,  5,  5, 10,  4, 11,  0,  7, 11,
    /*F*/  5, 10, 10,  4, 11, 11,  7, 11,  5,  5, 10,  4, 11,  0,  7, 11
};
Run Code Online (Sandbox Code Playgroud)

g ++带给我这个错误:

8080.h:521:错误:非整数类型`const unsigned char [256]'的静态数据成员的类内初始化无效

这个数组在一个名为i8080的类中.

GMa*_*ckG 12

就像它说的那样,你不能在类定义中初始化静态非整数类型.也就是说,你可以这样做:

static const unsigned value = 123;
static const bool value_again = true;
Run Code Online (Sandbox Code Playgroud)

但不是别的.

你应该做的是把它放在你的类定义中:

static const unsigned char cycles_table[256];
Run Code Online (Sandbox Code Playgroud)

在相应的源文件中,放置您拥有的内容:

const unsigned char i8080::cycles_table[256] = // ...
Run Code Online (Sandbox Code Playgroud)

这是做什么的(在定义中),"嘿,这将是这个阵列." 在源文件中,"嘿,这是那个数组."