【发布时间】:2017-05-03 10:05:07
【问题描述】:
在使用 C++ 语法时,我编写了一些我认为无法编译的代码。
以下代码被简化以隔离问题:
void foo(const) {} //why doesn't the compiler flag this line as error?
int main() {}
我在 MinGW 的 g++ 编译器上为 C++ 编译了上述源代码,它没有任何警告或错误。
出于好奇,我想知道为什么在函数参数中没有以下标识符的情况下允许使用 const 是否有任何意图。
或者这可能是一个错误?
编辑:看看this,亲眼见证其中的奥秘。
【问题讨论】:
-
我在 Ideone.com 上执行此操作时收到“错误:ISO C++ 禁止声明没有类型 [-fpermissive] 的‘参数’”。也许你在某个地方设置了那个标志。
-
刚在 Ubuntu 17.04 上用 G++ 试过,和 InternetAussie 报告的错误一样,这是不允许的。
-
你们俩都用什么版本的g++?您是否添加了任何其他编译器命令?
-
@Christian 我刚刚关闭了我的笔记本电脑,我现在在 PC 上,我使用的是 Ubuntu 17.04 附带的默认版本的 g++,尝试用谷歌搜索它。编译器没有额外的参数,只是一个默认编译:g++ programname.cpp
-
@FairPlay 我刚刚在网上测试了它,它确实给出了一个错误。这很奇怪,我使用的是 g++ 6.3.0(在其当前版本旁边),但它可以编译。猜猜我的好奇心到此为止了。