首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uthash和utarray向后兼容吗?

uthash和utarray向后兼容吗?
EN

Stack Overflow用户
提问于 2018-02-08 20:49:16
回答 2查看 103关注 0票数 1

我特别关注的是utarray版本2.0.2和1.9.6。(最近的版权分别为2017年和2012年)。

我需要将uthash.h添加到使用utarray.h的现有项目中,并且希望这两个标头都来自同一个版本/commit,因此我正在考虑用更新的utarray.h替换旧的utarray.h。

我应该指出,我并不是非常担心编译时的不兼容性,比如名称更改等等。我主要担心的是运行时间的中断。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 18:32:15

关于utarray的使用,一个罕见但100%可重复的堆栈损坏问题,使我尝试升级,只是utarray.h,但在我的公司全面。

简短的回答是否定的,它不是100%的向后兼容。但它非常接近。

更长的答案是,对于我们的应用程序,所需的更改非常琐碎,基本用法没有改变,堆栈损坏问题似乎已经解决了。它似乎还与其他较老的标题(如uthash )进行了良好的交互。

我发现的唯一接口更改是一个用于隐藏gcc警告的_UNUSED_宏,该宏已更改为UTARRAY_UNUSED。其他一切似乎都是错误修复。

编辑:我还不够天真,甚至一点都不相信1.9.6有导致堆栈损坏的问题,但在仔细地遍历调试器中相同的10行代码大约2小时并观察每个变量是否正确之后,我并没有完全排除这种可能性。

票数 0
EN

Stack Overflow用户

发布于 2018-02-08 21:07:31

如果您查看utarray.h,您将看到它定义的全部是宏、一些静态函数和一些类型;没有公共符号,因此一切都应该局限于当前的编译单元。

换句话说,是的,只要您不将两个头包含在同一个文件中(这可能会导致编译时错误)或在您的公共API中公开它,您就应该是安全的。

尽管如此,标题中的问题的答案是“否”;API中不兼容的更改破坏了向后兼容性。但有了你在身体里提到的限制你应该会没事的。

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

https://stackoverflow.com/questions/48694552

复制
相关文章

相似问题

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