這裏是一個警告,我和很多人在那裏在網絡上,看到C++代碼運行GCC時:爲什麼gcc的選項「-Wstrict-prototypes」對C++無效?
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
的警告文字是很清楚的:「C++」是不是在集合[阿達/ C/ObjC],所以我毫不懷疑gcc爲什麼在編譯C++代碼時給出這個警告。 (僅供參考,儘管使用C++代碼打開此標誌的原因是因爲它主要是C代碼,但我們選擇了嚴格的(高級別)警告選項列表,但我們添加了一些C++代碼。
我的問題是:爲什麼不是這樣的警告適用於C++
的警告選項GCC的文檔,從http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html是:
-Wstrict的原型(C和Objective-C只)如果函數被聲明或定義而沒有指定參數類型,則會發出警告( 舊樣式函數定義在沒有警告的情況下被允許,如果 的聲明指定的參數類型之前。)
現在我只知道我我忘了什麼東西顯然對C++的,但不C++還需要在原型指定參數類型的功能呢?誠然,這些函數原型通常在類聲明中,因爲函數通常是成員函數,但是不是原型還是需要的?或者即使他們只是良好的做法,那麼爲什麼gcc不會提供這個選項的支持?或者,如果沒有,通過C++的並行選項?
所以_warning_對於C++來說是多餘的,因爲如果我違反了C++代碼中的要求,編譯器會正確地報告_error_(並且編譯失敗)? – talkaboutquality
是的,因爲你提到的原因,在C++中對於缺少原型的警告是多餘的。就我而言,用於C++的'-Wstrict-prototypes'的GCC警告問題也是多餘的;就我而言,gcc可以默默地忽略C++的選項。 –