使用C和C ++文件编译库时发出警告

时间:2014-06-04 18:26:04

标签: c++ c c++11 codeblocks c99

我正在处理包含C ++文件和C文件的项目。在Code :: Blocks中,我在项目构建选项中选择了以下复选框-std=c++11

enter image description here

然后得到以下警告。

||warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]|

如果我也选中-std=c99的复选框,

enter image description here

我将收到以下警告。

||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

2 个答案:

答案 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)

试试这个:

Using Global Compiler Variables

它描述了不同的编译器变量和构建选项。您很可能需要进行更改或找出专门用于编译的每个C和C ++目标的变量。