C++ c++;-不支持非平凡的指定初始值设定项
我正在使用重建库,并在代码的此部分中发现此错误:C++ c++;-不支持非平凡的指定初始值设定项,c++,c,C++,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[] = { [FIXT_1_1] = "FIXT.1.1", [FIX_4_4] = "FIX.4.4",
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",
};
我收到的错误是:对不起,未实现:不支持非平凡的指定初始值设定项
。我已经看到了这个错误的其他例子,但是这些是来自另一个struct
的初始值设定项,而这一个是来自一个简单的char
,那么我如何解决这个问题呢?代码来自.c
文件,我通过cmake
在c++
中编译它
预先谢谢。
< P>等效的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编译器编译它。如果它有标题,使用代码>外部“C”<代码>,您可以直接从C++项目中使用它。如果没有,请将库的
#include
放在extern“C”
块中。您是否尝试将其放入extern C
或更改=
点
?您提到的这些“简单字符
”初始值设定项在哪里?我看不出任何东西。一般来说,你不能把C编译成C++。将C库编译为C,然后从C++代码中使用适当的标头和链接。@ FielkoiCiC.Cuth.CultC.<代码>并不能神奇地改变语言。但是,如果使用<代码>外部C ,C++编译器将不会突然接受C语法。你的意思是什么?我没说你很笨或是类似的。。。