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

14

是否有一种(标准化的)方法可以在C++中获取当前方法的名称?

使用GNU GCC,您可以通过使用宏__FUNCTION____PRETTY_FUNCTION__(用2个下划线括起来)来实现,但这当然是不可移植的。是否有一种在标准C++中实现此功能或使其可移植的方法?


你可以使用反斜杠来转义下划线,以防止 Markdown 错误处理它们... - Roddy
或者通过在编辑器中点击“代码”按钮,这就是我编辑时所做的。 - Paul Tomblin
我使用 BOOST_CURRENT_FUNCTION - fizzer
4个回答

27

__func__ 标识符是 C99 标准的一部分,并且出现在 C++0x 草案中。

编译器会将标识符 __func__ 隐式声明,就好像下面的内容位于每个函数体的开头:

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

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

在支持这些标准之前(或更广泛地支持它们之前),您将被限制在特定于编译器的代码中。


1

0

不,C++标准不支持它。


0
它被称为“内省”,在C++标准中并不存在这样的东西。你应该使用外部库(我认为boost在某种程度上支持它)。 但是请尝试弄清楚使用它的原因是否真的是一个好理由。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接