首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11与C++03的库兼容性

C++11与C++03的库兼容性
EN

Stack Overflow用户
提问于 2012-04-04 15:14:00
回答 1查看 1.3K关注 0票数 11

我正在用C++11开发一个应用程序,使用g++-4.7和-std=c++0x。

我的应用程序链接到一些用g++-4.7编译的共享库,但是没有-std=c++0x指令。

不幸的是,没有工作,这意味着我在使用外部库类和方法时有一些奇怪的行为。(当然,在没有-std=c++0x的情况下编译我的应用程序很好)。

  1. ,这是一种预期的行为,还是编译器的错误?
  2. ,任何解决办法(类似extern C关键字)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-04 15:20:19

标准库已更改,-std=c++0x编译器标志将确定正在使用的库的哪一部分。通过尝试在同一个程序中使用两个版本,您就违反了一个定义规则(对于标准库中的每个已使用元素,您都有两个相同标识符的定义)。

我不认为有什么简单的事情可以克服这个限制。您必须确保只使用库的一个版本(即在包含标准标头之前定义适当的宏以禁用这些库中的C++11 ),即使这样,我也不确定生成的代码是否仍然不会破坏C++03库代码(如果C++11扩展以不同的方式编译C++03库代码)。

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

https://stackoverflow.com/questions/10014042

复制
相关文章

相似问题

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