是否有一种(标准化)方法可以使用 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";
wherefunction-name
是编译器自动提供的实现定义的字符串。
在对这些标准的支持可用(或更广泛可用)之前,您会被编译器特定的垃圾所困扰。
不……但有些东西最终会成为非标准的标准!
请参阅http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx ,其中概述了 ANSI 标准内容,然后是包含FUNCTION的 microsofs
不,c++ 标准不支持它。
它被称为“内省”,在 c++ 标准中没有这样的东西。您应该使用外部库(我认为提升以某种方式支持它)。但是尝试弄清楚使用它的原因是否真的是一个好的原因。