链接 C 17/14/11 对象
假设您有多个来自同一编译器/版本的已编译对象:其中一个是用 C 11 编译的,另一个使用 C 14,第三个使用 C 17。假设所有标头都使用 C 11 结构,并且有没有相互依赖关系,这些对象的哪些组合可以安全地链接到单个二进制文件中?
GCC
对于 GCC,链接这些对象的任何组合都是安全的。标准版本(-std 选项)不会影响 ABI 兼容性,因为实现确保了此属性。
但是,当链接使用不同 GCC 版本编译的对象并使用较新 C 标准中的不稳定功能时,会出现问题编译器的支持已经完成。因此,使用 -std=c 11 链接使用 GCC 版本 4.9 和 5 编译的对象或使用 -std=c 17 链接使用 GCC 版本 7 和 8 编译的对象将导致问题。
其他注意事项
以上是C 11、C 14 和 C 17 对象能否安全链接在一起?的详细内容。更多信息请关注PHP中文网其他相关文章!