#include <iostream>
class A{
public:
void myfunction(){
std::cout << __func__;
}
};
int main(){
A obj;
obj.myfunction();
}
輸出爲myfunction
。不幸的是__funct__
不起作用。如何輸出成員函數的完全限定名稱,即A::myfunction
?顯示函數的完全限定名稱
#include <iostream>
class A{
public:
void myfunction(){
std::cout << __func__;
}
};
int main(){
A obj;
obj.myfunction();
}
輸出爲myfunction
。不幸的是__funct__
不起作用。如何輸出成員函數的完全限定名稱,即A::myfunction
?顯示函數的完全限定名稱
沒有標準的定義方式。但是,如果您使用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 ";
已經提供,其中函數名是一個實現自定義字符串
正如@Prasoon所說,沒有標準的方法。
對於Visual Studio,__FUNCTION__
顯示完全限定的名稱。
沒有標準,但Boost提供了一個跨平臺的宏:BOOST_CURRENT_FUNCTION,請參閱http://www.boost.org/doc/libs/1_46_0/libs/utility/current_function.html – 2011-05-27 13:16:38
我相信'__PRETTY_FUNCTION__'在C++ 0x中成爲標準嗎? – Xeo 2011-05-27 11:28:52
@Xeo:不,不。 :-) – 2011-05-27 11:35:31
啊,我明白了,所以它是'__func__'。 – Xeo 2011-05-27 11:37:54