__FILE__并且__LINE__众所周知.__func__自C99以来有一个.
#include <iostream>
struct Foo {
void Do(){ std::cout << __func__ << std::endl; }
};
int main()
{
std::cout << __func__ << std::endl;
Foo foo; foo.Do();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将输出
main
Do
Run Code Online (Sandbox Code Playgroud)
是否有任何输出方法名称的宏/关键字Foo::Do?
Kor*_*icz 80
Boost有一个名为BOOST_CURRENT_FUNCTION的特殊实用程序宏,它隐藏了编译器实现之间的差异.
在它的实现之后,我们看到有几个宏取决于编译器:
__PRETTY_FUNCTION__ - GCC,MetroWerks,Digital Mars,ICC,MinGW__FUNCSIG__ - MSVC__FUNCTION__ - 英特尔和IBM__FUNC__ - Borland__func__ - ANSI C99