当前位置:嗨网首页>书籍在线阅读

13-兼容与不兼容库比较

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

41.8 兼容与不兼容库比较

随着时间的流逝,可能需要修改共享库的代码。这种修改会导致产生一个新版本的库,这个新版本可以与之前的版本兼容,也可能与之前的版本不兼容。如果是兼容的话则意味着只需要修改库的真实名称的次要版本标识符即可,如果是不兼容的话则意味着必须要定义一个库的新主要版本。

当满足下列条件时表示修改过的库与既有库版本兼容。

  • 库中所有公共方法和变量的语义保持不变。换句话说,每个函数的参数列表不变并且对全局变量和返回参数产生的影响不变,同时返回同样的结果值。因此提升性能或修复Bug(导致更加行为更加符合规定)的变更可以认为是兼容的变更。
  • 没有删除库的公共API中的函数和变量,但向公共API中添加新函数和变量不会影响兼容性。
  • 在每个函数中分配的结构以及每个函数返回的结构保持不变。类似的,由库导出的公共结构保持不变。这个规则的一个例外情况是在特定情况下,可能会向既有结构的结尾处添加新的字段,但当调用程序在分配这个结构类型的数组时会产生问题。有时候,库的设计人员会通过将导出结构的大小定义为比库的首个发行版所需的大小大来解决这个问题,即增加一些填充字段以备将来之需。

如果所有这些条件都得到了满足,那么在更新新库名时就只需要调整既有名称中的次要版本号了,否则就需要创建库的一个新主要版本。