sorry, unimplemented: non-trivial designated initializers not supported

將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",

};

相關文章
相關標籤/搜索