将不同的C标准与GCC混合

前端之家收集整理的这篇文章主要介绍了将不同的C标准与GCC混合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下场景:

有两个组件,一个用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.

这表明存在问题.

所以问题是:

>如果使用–std = gnu 98和–std = c 11构建的两个组件链接在一起是否存在问题,即使很难使用相同的libstdc并使用相同的编译器(GCC 4.9)构建?
> Dual ABI支持表格GCC 5.1在这种情况下有影响吗?

解决方法

1)可能存在问题,例如,您提到的lib的某些部分的实现已更改.

2)是的.

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

你提到的维基的部分讨论了例如旧代码试图做不再支持的东西的情况(不同的语义但语法相同).

猜你在找的C&C++相关文章