我目前正在使用遺傳C++代碼,成功編譯與gcc 2.9.X.
我被要求將這個遺留代碼移植到gcc 3.4.X.大部分錯誤很容易糾正,但這個特別的錯誤讓我感到困惑。初始化C-struct的雙花括號的含義是什麼?
上下文:
struct TMessage
{
THeader header;
TData data;
};
struct THeader
{
TEnum myEnum;
TBool validity;
};
做了什麼:
const TMessage init = {{0}};
/* Later in the code ... */
TMessage message = init;
我的問題(一個或多個):
什麼是{{}}運營商的意義?它是否將第一個字段(標頭)初始化爲二進制0?它是否將第一個結構的第一個字段(枚舉)初始化爲(文字)0?
我得到的3.4.6錯誤是invalid conversion from 'int' to 'TEnum'
,帶有一對或兩對花括號。
如何在不使用memset的情況下將我的結構設置爲一堆0?
在此先感謝。
爲什麼要將代碼從舊版本的gcc移植到另一箇舊版本的gcc? – 2011-06-06 11:15:32
在另一個平臺上編譯/鏈接/執行它。 – 2011-06-06 11:17:39
不知道C++。在C中沒有錯誤(也許你的編譯器對錯誤點有幫助) – pmg 2011-06-06 11:19:46