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语法。你的意思是什么?我没说你很笨或是类似的。。。