將C語言轉換為C++代碼時,發生如下錯誤
sorry, unimplemented: non-trivial designated initializers not supported。
查找原因,是因為C++結構體初始化時,必須按照定義的順序進行初始化,不能夠跳過其中內容而初始化其他選項,或者定義的順序先后有問題。
eg:
typedef struct command
{
int a;
char *b;
int c;
int d;
};
在C語言中定義時候進行初始化,這個是可以的:
struct command cmd = {
.a = 20,
.c = 3,
};
而在C++語言中會報錯,修改方式如下:
struct command cmd = {
.a = 20,
.b = "", // 必須初始化
.c = 3,
};
還有一個就是順序問題,C++中必須與結構體中定義一致。
eg:
struct command cmd = {
.b = "fff",
.a = 3,
};
C中運行正常,而C++中運行異常,會報標題錯誤,修改
struct command cmd = {
.a = 3,
.b = "fff",
};