gpt4 book ai didi

C++ - 不支持非平凡的指定初始值设定项

转载 作者:行者123 更新时间:2023-11-30 20:53:45 31 4
gpt4 key购买 nike

我正在重建一个库,并在这部分代码中发现了此错误:

enum fix_version {
FIX_4_0,
FIX_4_1,
FIX_4_2,
FIX_4_3,
FIX_4_4,
FIX_5_0,
FIXT_1_1,
};

static const char *begin_strings[] = {
[FIXT_1_1] = "FIXT.1.1",
[FIX_4_4] = "FIX.4.4",
[FIX_4_3] = "FIX.4.3",
[FIX_4_2] = "FIX.4.2",
[FIX_4_1] = "FIX.4.1",
[FIX_4_0] = "FIX.4.0",
};

我收到的错误是: sorry, unimplemented: non-trivial designated initializers not supported 。我见过此错误的其他示例,但这些是来自另一个 struct 的初始值设定项,而这个来自简单的 char ,那么我该如何解决这个问题?该代码来自 .c 文件,我通过 c++cmake 中编译它。

提前谢谢您。

最佳答案

等效的 C++ 代码如下所示:

enum fix_version {
FIX_4_0,
FIX_4_1,
FIX_4_2,
FIX_4_3,
FIX_4_4,
FIX_5_0,
FIXT_1_1
};

static const char *begin_strings[] = {
"FIX.4.0",
"FIX.4.1",
"FIX.4.2",
"FIX.4.3",
"FIX.4.4",
0,
"FIXT.1.1"
};

这当然存在在enum更改时忘记修复数组的风险。但 C++ 就是不支持指定的数组初始值设定项。

正如评论中已经解释的那样,更好的选择是让库保持原样并使用 C 编译器进行编译。如果它的 header 适本地使用 extern "C",您可以直接从 C++ 项目中使用它。如果没有,请将库的 #include 放置在 extern "C" block 中。

关于C++ - 不支持非平凡的指定初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678893/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com