2011-05-27 38 views
6
#include <iostream> 
class A{ 
    public: 
    void myfunction(){ 
     std::cout << __func__; 
    } 
}; 
int main(){ 
    A obj; 
    obj.myfunction(); 
} 

輸出爲myfunction。不幸的是__funct__不起作用。如何輸出成員函數的完全限定名稱,即A::myfunction顯示函數的完全限定名稱

回答

9

沒有標準的定義方式。但是,如果您使用gcc,則可以使用__PRETTY_FUNCTION__而不是__func__

標準C++(即C++ 03)沒有__func____PRETTY_FUNCTION__

的C++ 0x從C99派生__func__,它是在定義8.4.2/8(n3290)

功能本地預定義的變量__func__被定義爲如果窗體的定義

static const char __func__[] = "function-name ";

已經提供,其中函數名是一個實現自定義字符串

+0

我相信'__PRETTY_FUNCTION__'在C++ 0x中成爲標準嗎? – Xeo 2011-05-27 11:28:52

+1

@Xeo:不,不。 :-) – 2011-05-27 11:35:31

+0

啊,我明白了,所以它是'__func__'。 – Xeo 2011-05-27 11:37:54

3

正如@Prasoon所說,沒有標準的方法。
對於Visual Studio,__FUNCTION__顯示完全限定的名稱。

+0

沒有標準,但Boost提供了一個跨平臺的宏:BOOST_CURRENT_FUNCTION,請參閱http://www.boost.org/doc/libs/1_46_0/libs/utility/current_function.html – 2011-05-27 13:16:38

相關問題