【发布时间】:2011-07-14 21:00:19
【问题描述】:
这是一个警告,我和网上的很多人,在 C++ 代码上运行 gcc 时查看:
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
警告文本非常清楚:'C++' 不在集合 [Ada/C/ObjC] 中,所以我完全不知道为什么 gcc 在编译 C++ 代码时会发出此警告。 (仅供参考,尽管有 C++ 代码,我们仍打开此标志的原因是因为它主要是 C 代码,我们选择了严格(高级)警告选项列表,但我们添加了一些 C++ 代码。
我的问题是:为什么这个警告对 C++ 无效?
来自http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html 的警告选项的 gcc 文档是:
-Wstrict-prototypes(仅限 C 和 Objective-C)如果在声明或定义函数时未指定参数类型,则发出警告。 (一个 允许旧式函数定义而不发出警告,如果 前面有一个指定参数类型的声明。)
现在我只是知道我忘记了一些关于 C++ 的明显内容,但 C++ 是否也不需要为原型中的函数指定参数类型?确实,这些函数原型通常在类声明中,因为这些函数通常是成员函数,但原型不是必需的吗?或者即使它们只是很好的做法,那么为什么 gcc 不通过这个选项提供支持呢?或者如果没有,通过 C++ 的并行选项?
【问题讨论】:
标签: c++ gcc compiler-warnings