2010-10-01 29 views
0

我只是好奇,如果下面的代碼會導致警告或沒有用g ++編譯器:不應該是這些警告與g ++ -Wall?

// Snip #1 
bool x = 0; 
x++; 

// Snip #2 
switch (x) { 
default: 
    printf("hi\n"); 
} 

的問題是這樣陳述的遺留代碼我在工作中存在: - |,我想應該有一些警告這些?

我有G ++ - 4.4.3c

+1

您期待什麼警告?在情況2中拋出「未使用的變量x」的警告是很棘手的,因爲對於所有編譯器來說,在那個開關中有*個案例,但是預處理器吃了它們。 – 2010-10-01 23:24:59

+0

正確。這排除了第二個。 – sud03r 2010-10-01 23:29:09

+0

如果你有一個非常好的編譯器,它會警告你增加一個布爾是一個不贊成的語言功能。 – 2010-10-01 23:31:36

回答

1

遞增bool是一個不推薦使用的函數,但它仍然有效並達到所需結果,因此不應出現警告,這樣做只是不好的做法。

1

與海灣合作委員會,-Wall實際上並不打開所有的警告。該手冊頁將涵蓋所有選項,但要真正徹底,請使用「-Wall -Weff-C++ -pedantic -Werror」。