首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C文件和C++文件编译库时发出警告

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

Stack Overflow用户
提问于 2014-06-04 18:26:04
回答 2查看 6.9K关注 0票数 2

我正在工作的项目,其中包含C++文件和C文件。在代码::块中,我在项目构建选项中选择了以下复选框-std=c++11

然后得到以下警告。

代码语言:javascript
运行
复制
||warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]|

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

我将得到一个额外的警告如下。

代码语言:javascript
运行
复制
||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吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-08 11:38:47

我认为您有此问题,因为您已经在GCC的-std=c++11全局编译器设置中启用了选项。我知道您说您在“”中启用了它,但是在全局编译器选项中启用它是导致这种行为的原因。

在C::B中,这个全局选项被描述为:

让g++遵循C++11 ISO C++语言标准

实际上,它将同时应用于g++gcc

但是,您可能建议在全局编译器选项中设置C++语言标准选项,即使它只适用于g++。这样,您将永远无法构建任何符合比C++11更早的标准的C++11项目,而不能构建C++11。

您应该返回到全局编译器设置,单击重置默认值和OK out。然后在项目级别设置-std=c++11编译器选项(以及您希望的任何其他非默认选项):

右键单击工作区树视图中的项目并打开Build options。确保选择的编译器是GNU GCC编译器,并选择编译器设置 -> 编译器标志选项卡。在这里,您将看到编译器选项的复选框列表与在全局编译器设置中看到的相同。启用-std=c++11选项并确定退出。

现在,项目中的任何.c文件都将使用gcc自动编译,没有任何g++-specific标志,而.cpp文件将自动使用g++-std=c++11和您选择的任何其他g++选项进行编译。

票数 2
EN

Stack Overflow用户

发布于 2014-06-05 17:37:57

试着读一下这个:

使用全局编译器变量

它描述了不同的编译器变量和构建选项。在那里,您很可能需要对编译的每个C和C++目标进行更改或找出具体使用的变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24044865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档