This question already has answers here:
Why does C++11 not support designated initializer lists as C99? [closed]
(5个答案)
3年前关闭。
我通常使用枚举通过定义两个数组来保持一致,如下所示:
该代码对于
两个数组声明中的每一行都出错。这是什么问题
(5个答案)
3年前关闭。
我通常使用枚举通过定义两个数组来保持一致,如下所示:
enum foo {
ZERO = 0,
ONE,
TWO,
};
int int_array[] = {
[ZERO] = 0,
[ONE] = 1,
[TWO] = 2
};
char *str_array[] = {
[ZERO] = "ZERO",
[ONE] = "ONE",
[TWO] = "TWO"
};
该代码对于
c
可以正常编译,但是在cpp
模块中使用时会引发以下错误。expected primary-expression before ‘[’ token
两个数组声明中的每一行都出错。这是什么问题
最佳答案
C ++不支持所谓的指示符。 C中允许的初始化。
因此,编译器发出一条消息。
在C ++中,您只需编写以下方式
int int_array[] = { 0, 1, 2 };
const char *str_array[] = { "ZERO", "ONE", "TWO" };
^^^^^^
关于c++ - [[] token 之前的预期主要表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36416892/
10-12 22:50