GCC 中的Typeid.name() 行為與分解技術
使用typeid 運算子時,開發人員會遇到typeid 輸出的差異。 name() 取決於所使用的編譯器。本文探討了 GCC 中發生這種情況的原因以及如何解決列印未損壞的類型名稱的問題。
GCC 與Visual C :型別名稱顯示
在範例中假設,GCC(版本4.4.4)在呼叫typeid(Blah).name() 時傳回“4Blah”,而Visual C 2008 顯示“struct廢話。”這種差異是由於GCC 返回修飾類型名稱造成的。
GCC 的修飾型別名稱
typeid 運算子的實作並沒有統一定義。對於 GCC,它會傳回一個修飾類型名稱,其中包括類型的大小和對齊方式等附加資訊。
Unmangling Decorated Names
擷取未修飾的名稱輸入名稱,使用者必須對修飾名稱進行整理。這可以使用各種工具來完成:
應用分解
應用分解g++ -fno-rtti -no-pie -o main main.cpp ./main | c++filt
以上是為什麼 `typeid.name()` 在 GCC 中產生不同的輸出以及如何解析它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!