將C語言轉換爲C++代碼時,發生以下錯誤cmd
sorry, unimplemented: non-trivial designated initializers not supported。it
查找緣由,是由於C++結構體初始化時,必須按照定義的順序進行初始化,不可以跳過其中內容而初始化其餘選項,或者定義的順序前後有問題。command
eg:im
typedef struct command異常
{語言
int a;vi
char *b;co
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",
};