在GCC 中使用typeid.name() 分解未修飾的型別名稱
使用typeid.name() 擷取型別名稱時,不同的編譯器可能會提供不同的結果。例如,眾所周知,GCC 會傳回「損壞」的名稱,而 Visual C 則提供未損壞的名稱。
這種差異源自於 typeid.name() 的回傳值是實現定義的事實。根據 C 標準,每個實作都可以自行決定如何表示類型名稱。
對於 GCC,typeid.name() 傳回的名稱帶有稱為「損壞名稱」的附加資訊。 」此格式包括用於內部編譯器目的的裝飾。要獲得未損壞的類型名稱,您可以使用c filt 命令或__cxa_demangle 函數。
c filt 4Blah
輸出:struct Blah
__cxa_demangle("4Blah",空指針,空指針, nullptr)
輸出:Blah
利用這些工具,您可以對修飾的類型名稱進行分解並檢索所需的未分解表示。
以上是如何從 typeid.name() 解開 GCC 的損壞類型名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!