__FILE__
和 __LINE__
是众所周知的。从 C99 开始有一个 __func__
。
#include <iostream>
struct Foo {
void Do(){ std::cout << __func__ << std::endl; }
};
int main()
{
std::cout << __func__ << std::endl;
Foo foo; foo.Do();
return 0;
}
会输出
main
Do
是否有任何宏/关键字会输出方法名称,如 Foo::Do
?
最佳答案
Boost 有一个特殊的实用宏,称为 BOOST_CURRENT_FUNCTION这隐藏了编译器实现之间的差异。
在它的实现之后,我们看到有几个宏取决于编译器:
__PRETTY_FUNCTION__
-- GCC、MetroWerks、Digital Mars、ICC、MinGW__FUNCSIG__
-- MSVC__FUNCTION__
-- 英特尔和 IBM__FUNC__
-- Borland__func__
-- ANSI C99
关于c++ - 可用于打印方法名称的宏/关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2192680/