2012-01-07 44 views
3

我對RTTI知之甚少,但我相信由於您可以在運行時檢索變量的名稱。 是否有可能檢索線程當前正在運行的函數的名稱?是否有可能在C++中獲取當前(成員)函數名稱?

+1

不,RTTI不返回變量的**名稱**,它允許您確定它們的**類型**。 – 2012-01-07 13:06:23

+1

可能重複[如何在C中抓取堆棧跟蹤?](http://stackoverflow.com/questions/105659/how-can-one-grab-a-stack-trace-in-c) – 2012-01-07 13:07:24

+0

好的,我認爲'typeid(var).name'這樣做,但顯然它會返回變量類型的名稱。 – qdii 2012-01-07 13:08:20

回答

11

對於當前函數,C++ 11標準化爲__func__

各種編譯器支持__FUNCTION__,__PRETTY_FUNCTION__和其他的變體。

2

如果你正在做GNU兼容的東西,你可能想嘗試backtrace

+0

是的,但它比C++或g ++特定的GNU libc(或Linux)更多。 – 2012-01-07 13:09:27

0

不,這是不可能的。 C++不支持反射(靜態或動態)(如C#)。你需要一些預處理器魔法來模擬它。

除此之外,在運行時不一定有函數/方法名稱的概念(如果使用相應的標誌編譯源代碼,則只能用作調試信息)。

相關問題