我正在处理包含C ++文件和C文件的项目。在Code :: Blocks中,我在项目构建选项中选择了以下复选框-std=c++11
。
然后得到以下警告。
||warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]|
如果我也选中-std=c99
的复选框,
我将收到以下警告。
||warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [enabled by default]|
有办法解决这个问题吗?我是否可以仅为-std=c++11
文件设置C++
标志,为C文件设置-std=c99
?
答案 0 :(得分:2)
我相信您遇到此问题是因为您已启用-std=c++11
GCC的全局编译器设置中的选项。我知道你说你启用了它
在“项目构建选项”中,但在全局编译器选项中启用它是导致的原因
这种行为。
C :: B中的一个错误是这个全局选项被描述为:
让g ++遵循C ++ 11 ISO C ++语言标准
实际上它将同时适用于g++
和gcc
。
但是,设置C ++语言标准选项可能是不明智的
在全局编译器选项中,即使它只适用于g++
。那
因此,您将永远无法构建符合的任何C ++项目
早于C ++ 11但不是C ++ 11的标准。
您应该返回全局编译器设置,点击重置默认值,然后
好的。然后设置-std=c++11
编译器选项(以及任何其他非默认值)
您想要的选项项目级别:
在工作区树视图中右键单击项目,然后打开构建选项。
确保选定的编译器是 GNU GCC编译器并选择
编译器设置 - > 编译器标记标签。在那里你会看到
您在全局编译器设置中看到的编译器选项的相同复选框列表。
启用-std=c++11
选项并单击“确定”。
现在,项目中的任何.c
文件都将自动使用gcc
进行编译,
没有任何g++
特定标志,.cpp
文件将自动生成
使用g++
编译,使用-std=c++11
以及您拥有的任何其他g++
选项
选择的。
答案 1 :(得分:0)