https://www.acodersjourney.com/20-abi-breaking-changes/
看到这篇文章
针对可相容的改动
7. Change the implementation of an inline method
8. Change an inline method to non-inline
这两点我无法理解
我对abi相容的认知 大概是
exe 不需re compile, 更新.dll or .so 即可正常运行
但是
7
假设我exe 已经build好,如果inline 确实发生了
表示 inline的那份程式码已经是 exe 的code section的一部分了
我inline改了实作 怎么可能不需要recompile exe,无法理解......
至于 8 ,如果 dll 的inline拿掉 可是不改实作,可能真的不会不相容(因为没改实作
逻辑)但这表示dll的code section已经多了 这段新增的程式码 , 这样不会有任何side
effect产生吗?(这部分没概念)
承abi相容问题,
1.虽然可以遵守一些规范,但难免有时候不小心改出不相容的时候,难道只能用测试来确
保相容性吗,还是有什么tool可以提早发现?
2. 相容性这件事真的很重要吗?我全部exe跟相关用到这.so的module都重新compile , g
it diff发现有改变发生 我就全部当成更新的一部分,这有什么大问题吗? 容量吗 ,毕
竟这些比起asset都来得小很多 为什么要追求相容呢? 当然OS提供的lib 该要追求这.
如果都自己的产品的一部分 这很重要吗?
3. inline成功后 函数 应该不存在在symbol table吧?这样上面说可以相容的结论 更是
让我无法理解了
4. 看过有code写 inline在.h declare, inline 也写在.cpp definition. 这种写法是不
是不太正确(还是也可以,还是有特殊用意)
可以简单记住 函数要inline 就把定义写在.h
class内 函数写define在.h 默认inline 所以可以不特别写(大方向有错误吗?)
以上
谢谢:)