无法识别的命令行选项'-std = c ++ 11'

Mon*_*ams 1 c++ compiler-errors codeblocks c++11

CodeBlocks即使没有-std=c++11启用选项(我检查了所有设置和项目文件),仍然会给我这个错误.

有没有办法禁用它?

Mik*_*han 5

这是我最好的猜测.您用于构建项目的编译器是gcc.您已-std=c++11在此编译器的全局设置中进行了设置,但已安装的gcc版本太旧而无法识别该选项.

要在Code :: Blocks IDE中检查它:

  • 导航设置 - >编译器

  • 从标有Selected compiler的下拉菜单中,选择GNU GCC编译器

  • 在下面的选项卡面板上,选择" 编译器设置" - >"编译器标志"

  • 从标有"类别"的下拉菜单中选择<All categories>.

  • 查看编译器选项的复选框列表,直到看到:

让g ++遵循C++ 11 ISO C++语言标准[-std = c ++ 11]

  • 如果选中该复选框,则可能是您的问题.取消选中它,单击"确定",然后尝试重建项目.

如果这样可以解决问题,则应考虑将gcc升级到支持该-std=c++11选项的版本(> = 4.7),因为您将支持最新C++标准的C++语言和库功能.

如果您不能这样做,您可能会发现-std=c++0x编译器可以接受该选项.如果可行,它将为您的编译器发布时可用的某些临时版本的C++ 11标准提供支持.

与上述不太相关的情况是,您用于构建项目的编译器不是gcc,而是一些其他非命令行兼容的编译器,而不是您通过复制GCC的全局配置在Code :: Blocks中设置的编译器,其中-std-c++11选项已设置.在这种情况下,您只需确保没有为此编译器配置它无法识别的全局选项.

为了将来的参考,如果您对c ++编译器的命令行选项有疑问,请说明它是什么编译器,以及版本.

  • @ MonetR.Adams是的,这对于`-std-c ++ 11`来说太旧了(你需要> = 4.7)但它会接受`-std = c ++ 0x`. (2认同)