当我使用C ++语法时,我编写了一些我认为无法编译的内容。
以下代码已经过简化以解决问题:
void foo(const) {} //why doesn't the compiler flag this line as error?
int main() {}
我在MinGW&#39的g ++编译器上编译了上面的C ++源代码,并且没有任何警告或错误。
出于好奇,我想知道为什么在函数参数中没有跟随标识符的情况下允许const的原因是什么。
或者这可能是一个错误?
编辑:看看this并亲眼目睹神秘面纱。
答案 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)。