[英]Ignoring GCC “error: braces around scalar initializer for type” errors. Make them warnings
我對GCC編譯器錯誤有一個na的問題:“錯誤:類型的標量初始化程序周圍有花括號”。 我看到其他人對此表示抱怨,盡管他們將其描述為警告( gcc警告:標量初始值設定項周圍的花括號 )
我正在編譯不是我要編輯的代碼,並且在整個代碼中都遇到了很多這樣的錯誤。
基本模式是:
struct t_
{
float f;
int i;
};
float f = { 0.3 }; //Compiler is all happy with this.
int i = {0}; //Compiler is all happy with this too.
t_ t1 = { 0.3, 0 }; //Compiler is all happy with this too.
t_ t2 = { {0.3}, 0 }; //Compiler ERROR: braces around scalar initializer for type 'float'
我知道我可以刪除浮點縮放器周圍的花括號{}來消除此錯誤,但是我不想以任何方式修改代碼。 我是否可以給GCC一個標志(當前使用MinGW gcc 4.8.1)。 即“ std = c ++ 03”,或至少使這些錯誤顯示為警告的內容。
謝謝
我不確定100%,但是我相信沒有這種選擇。 在兩種情況下,您擁有的構造並不具有相同的含義-第一種是一種結構的初始化,第二種是包含結構或數組的結構。 這當然float
不大。
您也許可以解決
struct t_
{
struct
{
float f;
};
int i;
};
至少clang對此感到滿意。 和g ++一樣。 這可能比更改許多帶有大括號的初始化語句要容易。 但是誠然,它仍然是對源代碼的更改。 不幸的是,我可以肯定這是必要的。
我正在測試的完整示例:
struct t_
{
struct
{
float f;
};
int i;
};
t_ t2 = { {0.3}, 0 };
int main()
{
t2.f = 7;
}
編輯:如果根本無法編輯源代碼,則需要解析源代碼,識別不正確的花括號並輸出“正確”的代碼。 我考慮的越多,我相信無需對源代碼進行某種編輯就完全可以修復的可能性就越小。 或者它曾經編譯過...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.