为什么在函数参数中没有标识符的const关键字编译?

时间:2017-05-03 10:05:07

标签: c++ gcc mingw

当我使用C ++语法时,我编写了一些我认为无法编译的内容。

以下代码已经过简化以解决问题:

void foo(const) {} //why doesn't the compiler flag this line as error?
int main() {}

我在MinGW&#39的g ++编译器上编译了上面的C ++源代码,并且没有任何警告或错误。

出于好奇,我想知道为什么在函数参数中没有跟随标识符的情况下允许const的原因是什么。

或者这可能是一个错误?

编辑:看看this并亲眼目睹神秘面纱。

1 个答案:

答案 0 :(得分:0)

您可能正在运行编译器而未启用有用的警告。许多编译器只发出标准要求的诊断程序,除非您特别要求更多:

g++ -std=c++17 -fPIC -g -Wall -Wextra -Wwrite-strings -Wno-parentheses -Wpedantic -Warray-bounds -Weffc++     -c -o 16019202.o 16019202.cpp
16019202.cpp:1:10: error: ISO C++ forbids declaration of ‘parameter’ with no type [-fpermissive]
 void foo(const) {} //why doesn't the compiler flag this line as error?
          ^~~~~

(在Debian上使用GCC 6.3.0)。