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 所以可以不特別寫(大方向有錯誤嗎?)
以上
謝謝:)