c++ - ‘[’ 标记之前的预期主表达式

标签 c++ enums

<分区>

我通常使用枚举来保持两个数组的一致性,方法是像下面这样定义它们:

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++ - ‘[’ 标记之前的预期主表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416892/

相关文章:

c++ - GCC 生成不需要的汇编代码

python - C++ Qt : QProcess run Python script path specifying Python version

c++ - 带有 Github 的 Visual Studio 文件夹

java - play framework - 在路由中绑定(bind)枚举

enums - 什么设置导致 ENUM 在 MySQL Workbench 中不可用?

c++ - 结构中的枚举

c++ - 模板友好语法

c++ - 用c++将信息写入空窗口

c++ - 将此枚举传递给 CTOR 有什么问题?

java - Struts2 - 如何使用 <s :url> inside <s:select> to create hyperlinks?