2010-11-29 30 views
3

作爲一個新手,我想知道在學習C++時總是使用這些標誌(使用g ++)是否有益?我應該在學習C++的時候總是使用-gall和-pedantic開關?

感謝

+1

「我應該永遠......」傾向於是個人觀點火焰焰火的邀請......傾向於同意的人傾向於表達他們的支持,而傾向於不同觀點的人傾向於提出反對意見。 – 2010-11-29 10:49:49

+2

要添加: 乍一看,「學習無警告代碼」聽起來像是一個好主意,也是一個很好的前進方向。另一方面,只要自己編寫的代碼樣本不會發揮作用,無論您是從教科書中嘗試的東西還是嘗試在其他地方找到的開放源代碼,實用主義都會立即啓動。該代碼不可能在特定的編譯器中完全無警告。 – 2010-11-29 11:02:44

回答

2

只要你理解他人編寫的代碼樣本可能會導致警告與-Wall,那麼,它的使用,因爲它可以讓你在編寫代碼的習慣,這是免費的一個很好的標誌編譯器可能識別的任何潛在灰色區域。

-pedantic另一方面,是一個棘手的情況。以下是GCC 4.4.4聯機手冊的說明:

發出所有嚴格的ISO C和ISO C++要求的警告;拒絕所有使用禁止擴展的程序,以及其他一些不遵循ISO C和ISO C++的程序。對於ISO C,遵循由所使用的任何-std選項指定的ISO C標準版本。

有效的ISO C和ISO C++程序應該在使用或不使用此選項的情況下正確編譯(儘管極少數將需要指定ISO C所需版本的-ansi或-std選項)。但是,如果沒有這個選項,也支持某些GNU擴展和傳統的C和C++特性。用 這個選項,它們被拒絕。

-pedantic不會導致使用名稱以__開頭和結尾的替代關鍵字的警告消息。在 後跟「__分機號__」也禁用了迂腐警告。但是,只有系統頭文件應該使用這些轉義路由;應用程序應該避免 他們。

一些用戶嘗試使用-pedantic來檢查程序是否符合嚴格的ISO C標準。他們很快就發現它沒有達到他們想要的效果:它發現了一些非ISO實踐,但不是全部 - 只有那些ISO C要求診斷的實體,以及其他一些已經添加了診斷的實踐。

報告任何不符合ISO C的功能在某些情況下可能會有用,但需要大量的額外工作,並且會與pedantic完全不同。我們不打算在不久的將來支持這種功能。

1

不完全是一個答案,但還有的-Weffc++標誌發出警告,即違反C++有效(該書由斯科特·邁耶)的指導方針結構。

雖然這些準則是好的,但它們也可能過於嚴格,例如。 STL頭文件將發出警告。

相關問題