簡體   English   中英

忽略GCC“錯誤:標量初始值設定項周圍的花括號”類型錯誤。 向他們發出警告

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM