2015-05-19 76 views
-3

我想知道是否有任何編譯器標誌可以啓用治療選項做出錯誤:衝突的類型錯誤的警告

"error: conflicting types"

錯誤的警告。有沒有這樣的標誌存在?

+2

你爲什麼要這樣?解決根本原因是比抑制警告更好的選擇。 –

+0

這看起來像你的代碼中的一個真正的錯誤(通常是)。如果你認爲你的代碼是正確的,那麼向我們展示一個代碼示例,我們可以提供幫助。 –

回答

1

衝突類型的案例錯誤無法刪除。如果可能的話,有錯誤信息有什麼意義?考慮下面的情況下

#include <stdio.h> 

int main(void) { 
    int p = 5; 
    float p = 5; 

    printf("%d %f\n", p, p); 
    return 0; 
} 

編譯產生

prog.c: In function 'main':
prog.c:5:8: error: conflicting types for 'p'
float p = 5;
^
prog.c:4:6: note: previous definition of 'p' was here
int p = 5;
^

在這裏,有兩個變量的名稱衝突。這是一個錯誤,編譯器不能繼續,因此它會發出錯誤消息。如果您希望將此錯誤轉化爲僅僅警告並繼續編譯,那麼如何確定下一步?這是不可能的。


然而,一個專門的情況下,的功能隱含的聲明也將觸發此警告和啓用-Werror標誌,它會給錯誤。這種特殊情況可以繞過(嘗試自己承擔風險)。

never thtought of trying this myself

如果你不想成爲警告一個隱含的聲明(導致衝突的類型),你可以使用no-Wimplicit實現這一目標,我猜。