在c ++中获取当前方法的名称

时间:2008-10-29 17:35:16

标签: c++ introspection

是否有(标准化)方法使用c ++获取当前方法的名称?

使用GNU GCC可以使用宏__FUNCTION____PRETTY_FUNCTION__(由2个下划线包围)来实现,但是,这当然是不可移植的。有没有办法在标准c ++中实现这一点或者使其可移植?

4 个答案:

答案 0 :(得分:27)

__func__标识符是C99标准的一部分,位于C ++ 0x草案中。

标识符__func__由编译器隐式声明,就好像以下是每个函数体的开头一样:

static const char __func__[] = "function-name";

其中function-name是由编译器自动提供的实现定义字符串。

在支持这些标准之前(或者更广泛地使用),你会遇到特定于编译器的垃圾。

答案 1 :(得分:1)

不......但有些事情最终成为非标准标准!

请参阅http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx,其中概述了ANSI标准内容,然后是包含 FUNCTION

的microsofs

答案 2 :(得分:0)

不,c ++标准不支持。

答案 3 :(得分:0)

它被称为“内省”,在c ++标准中没有这样的东西。你应该使用一个外部库(我想以某种方式支持它)。 但是试着弄清楚使用它的原因是不是很好。