2017-06-22 45 views
2

可以看出here,下面是有效的C代碼:是否有一個GCC標誌發出關於範圍內的相同變量重新定義的警告?

int test = 10; 
if (true) { 
    int test = 10; 
} 

我不知道是否有在這樣的情況下,如果重新定義是相同的警告標誌。

+1

什麼問題閱讀自己GCC的文檔?太多的文字?知道存在哪些警告是非常有用的。 – Olaf

+0

@Olaf哇。當然,我可以閱讀它,但對社區來說沒有任何價值。順便說一句,C++標籤_is_有效。看到我鏈接到的相關問題。 –

+0

無論如何,這些問題(這也是一個蹩腳的藉口)對社區沒有任何價值,因爲這顯然是首先要搜索的東西。 gcc有很好的文檔記錄,並且文檔不容易找到:'gcc documentation'。 – Olaf

回答

4

有:-Wshadow=local。傳遞一個不同的值(而不是「本地」)還可以更精確地控制哪些標識符可以被映射,也可以不被映射。

它檢查名稱是否相同,這是一個足夠好的近似值。

2

-Wshadow 時發出警告的局部變量或類型聲明遮蓋另一個變量,參數,類型或類成員(在C++),或者 每當內置函數被遮蔽。請注意,在C++中, 編譯器不會警告局部變量是否會影響結構/類/枚舉,但會警告是否會影響顯式的typedef。

來源:https://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Warning-Options.html

相關問題