是否有一种(标准化的)方法可以在C++中获取当前方法的名称?
使用GNU GCC,您可以通过使用宏__FUNCTION__
和__PRETTY_FUNCTION__
(用2个下划线括起来)来实现,但这当然是不可移植的。是否有一种在标准C++中实现此功能或使其可移植的方法?
是否有一种(标准化的)方法可以在C++中获取当前方法的名称?
使用GNU GCC,您可以通过使用宏__FUNCTION__
和__PRETTY_FUNCTION__
(用2个下划线括起来)来实现,但这当然是不可移植的。是否有一种在标准C++中实现此功能或使其可移植的方法?
__func__
标识符是 C99 标准的一部分,并且出现在 C++0x 草案中。
编译器会将标识符 __func__
隐式声明,就好像下面的内容位于每个函数体的开头:
static const char __func__[] = "function-name";
其中function-name
是由编译器自动提供的实现定义字符串。
在支持这些标准之前(或更广泛地支持它们之前),您将被限制在特定于编译器的代码中。
不是所有的事情都遵循标准!
请参阅http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx,其中概述了ANSI标准的内容,以及微软公司提供的FUNCTION。
不,C++标准不支持它。
BOOST_CURRENT_FUNCTION
。 - fizzer