Itanium C ABI 指定函數名稱的修飾資訊和功能。建構子名稱遵循特定的模式:
_Z | N | <class_name> | <ctor-type> | E | <parameters> prefix | nested | `Thing` | Constructor | end nested | parameters: `int`
由於GCC 發出的建構子型別不同,函式庫中的建構子符號出現兩次:
即使相關類別沒有虛擬基類,GCC 仍然會發出兩個建構子作為支援的副產品多態性。如果不涉及多態性,GCC 可以透過僅發出一個建構函數來進行最佳化。
這兩個構造函數由於其損壞名稱中的 C1 和 C2 指示符而具有不同的名稱,這表明他們執行的不同類型的構造。
構造函數符號的雙重發射是結果的 Itanium C ABI 和對多態性的支持,但當不使用多態性時,它可以被 GCC 優化掉。
以上是為什麼 Itanium C ABI 發出雙重建構函式符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!