之前的预期主要表达式

之前的预期主要表达式

This question already has answers here:
Why does C++11 not support designated initializer lists as C99? [closed]
                                
                                    (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