微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将不同的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机制可能是一个解决方案.要非常小心它在不同版本的代码之间共享的内容.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐