解開(kāi)std :: type_info :: name的結(jié)果我目前正在研究一些日志代碼,它們應(yīng)該 - 除其他外 - 打印有關(guān)調(diào)用函數(shù)的信息。這應(yīng)該相對(duì)容易,標(biāo)準(zhǔn)C ++有一個(gè)type_info類。它包含typeid'd類/函數(shù)/ etc的名稱。但它被破壞了。它不是很有用。即typeid(std::vector<int>).name()回歸St6vectorIiSaIiEE。有沒(méi)有辦法從中產(chǎn)生有用的東西?就像std::vector<int>上面的例子一樣。如果它只適用于非模板類,那也沒(méi)關(guān)系。該解決方案應(yīng)該適用于gcc,但如果我可以移植它會(huì)更好。這是為了記錄所以它不是那么重要,它不能被關(guān)閉,但它應(yīng)該有助于調(diào)試。
3 回答

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
這就是我們使用的。HAVE_CXA_DEMANGLE僅在可用時(shí)設(shè)置(僅限最新版本的GCC)。
#ifdef HAVE_CXA_DEMANGLEconst char* demangle(const char* name){ char buf[1024]; unsigned int size=1024; int status; char* res = abi::__cxa_demangle (name, buf, &size, &status); return res; }#elseconst char* demangle(const char* name){ return name;}#endif
- 3 回答
- 0 關(guān)注
- 1178 瀏覽
添加回答
舉報(bào)
0/150
提交
取消