gpt4 book ai didi

c++ - 将不同的 C++ 标准与 GCC 混合

转载 作者:可可西里 更新时间:2023-11-01 17:59:13 27 4
gpt4 key购买 nike

我有以下场景:

有两个组件,一个是用 C++11 编写的,另一个是用 C++98 编写的。两者都是使用相同的 GCC 4.9 从头开始​​编译的。一个使用隐式默认值 --std=gnu++98,另一个显式设置 --std=c++11

即使做了一些研究,我也无法完全回答这个问题是否会导致问题。

GCC wiki说:

The C++98 language is ABI-compatible with the C++11 language, but several places in the library break compatibility. This makes it dangerous to link C++98 objects with C++11 objects. If you can recompile your code in matching versions of the language, you should do that.

这表明问题是意料之中的。

所以问题是:

  1. 如果将使用 --std=gnu++98--std=c++11 构建的两个组件链接在一起,是否会出现问题,甚至他们使用相同的 libstdc++ 并使用相同的编译器 (GCC 4.9) 构建?

  2. 是否Dual ABI对 GCC 5.1 的支持对这种情况有影响吗?

最佳答案

1) 可能存在问题,例如,您提到的库的某些部分的实现发生了变化。

2) 是的。

我会在两个 c++ 版本之一中重新编译所有内容。如果这不是一个选项(第三方库等),使用双 ABI 机制可能是一个解决方案。在不同版本的代码之间共享的内容要非常小心。

你提到的 wiki 部分谈到了一些情况,例如,旧代码试图做不再受支持的事情(不同的语义但相同的语法)。

关于c++ - 将不同的 C++ 标准与 GCC 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com