連結C 17/14/11 物件
假設您有多個來自同一編譯器/版本的已編譯物件:其中一個是用C 11 編譯的,另一個使用C 14,第三個使用C 17。假設所有標頭都使用 C 11 結構,並且有沒有相互依賴關係,這些物件的哪些組合可以安全地連結到單一二進位檔案中?
GCC
對於 GCC,連結這些物件的任何組合都是安全的。標準版本(-std 選項)不會影響 ABI 相容性,因為實作確保了此屬性。
但是,當連結使用不同 GCC 版本編譯的物件並使用較新 C 標準中的不穩定功能時,會出現問題編譯器的支援已經完成。因此,使用 -std=c 11 連結使用 GCC 版本 4.9 和 5 編譯的物件或使用 -std=c 17 連結使用 GCC 版本 7 和 8 編譯的物件將導致問題。
其他注意事項
以上是C 11、C 14 和 C 17 物件能否安全連結在一起?的詳細內容。更多資訊請關注PHP中文網其他相關文章!