为什么gcc的选项"-Wstrict-prototypes"对C++无效?

tal*_*ity 6 c++ gcc compiler-warnings

这是一个警告我,网上有很多人,看看在C++代码上运行gcc时:

cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
Run Code Online (Sandbox Code Playgroud)

警告文字非常清楚:'C++'不在集合[Ada/C/ObjC]中,所以我完全不清楚为什么gcc在编译C++代码时会发出这个警告.(仅供我们使用C++代码打开此标志的原因是因为它主要是C代码,我们选择了严格(高级别)警告选项列表,但我们添加了一些C++代码.

我的问题是:为什么这个警告对C++不起作用?

警告选项的gcc文档来自http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html,它是:

-Wstrict-prototypes(仅限C和Objective-C)如果声明或定义函数而不指定参数类型,则发出警告.(如果前面有一个指定参数类型的声明,则允许使用旧式函数定义而不发出警告.)

现在我只知道我忘了关于C++的一些明显的东西,但C++是否也需要为原型中的函数指定参数类型?确实,那些函数原型通常在类声明中,因为函数通常是成员函数,但不是原型而是必需的吗?或者即使他们只是好习惯,那么为什么gcc不会通过这个选项提供支持呢?或者如果没有,通过C++的并行选项?

Mic*_*urr 9

我想这是因为C++需要严格的原型作为语言的一部分,所以选项是多余的.为什么这样做让GCC需要抱怨它就超出了我.

我在我的构建脚本中为小样本/测试C或C++程序设置了该选项,并且警告类型让我感到恼火 - 似乎没有理由警告,因为语言的默认行为是我要求的.但它就在那里,所以有一天,当它让我充满烦恼时,我会修复我的脚本,而不用担心C++版本的选项.