c- uthash和utarray向后兼容

  • 本文关键字:utarray uthash c uthash
  • 更新时间 :
  • 英文 :


我特别担心UTARRAY版本2.0.2 vs. 1.9.6。(最近的版权分别是2017年和2012年(。

我需要将uthash.h添加到使用utarray.h的现有项目中,并且宁愿这两个标头都来自相同的版本/comm。

我应该注意,我并不非常关心编译时间不兼容,例如名称更改等。我主要关注的是运行时间中断。

如果您查看utarray.h,您会发现它的所有定义都是宏,一些静态函数和一些typedefs;没有公共符号,因此所有内容都应仅限于当前的汇编单元。

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

也就是说,标题中问题的答案是"否";API向后兼容的不兼容变化。但是,有了您在体内提到的限制,您应该可以。

围绕UTARRARY使用的罕见但100%可重复的堆栈腐败问题,使我尝试升级utarray.h,但在我公司的全面进行。

简短的答案是否定的,它不是100%向后兼容。但这很近。

较长的答案是针对我们的应用程序,所需的更改是极其微不足道的,基本用法不会改变,并且堆栈腐败问题似乎已经消失。它似乎也与其他较旧的标头(例如uthash(互动。

我发现的唯一接口更改是用于Hushing GCC警告更改为UTARRAY_UNUSED_UNUSED_宏。其他一切似乎都是错误修复。

编辑:我还不够天真,甚至不远视1.9.6遇到了造成我们堆栈腐败的问题,但是在仔细踏上了调试器中相同的10行代码后,我并没有完全忽略这种可能性大约2个小时,观看每个变量是正确的。

相关内容

  • 没有找到相关文章