14

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

使用 GNU GCC,您可以使用宏__FUNCTION____PRETTY_FUNCTION__(由 2 个下划线包围)来做到这一点,但是,这当然是不可移植的。有没有办法在标准 C++ 中做到这一点或让它可移植?

4

4 回答 4

27

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

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

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

wherefunction-name是编译器自动提供的实现定义的字符串。

在对这些标准的支持可用(或更广泛可用)之前,您会被编译器特定的垃圾所困扰。

于 2008-10-29T17:39:51.963 回答
1

不……但有些东西最终会成为非标准的标准!

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

于 2008-10-29T17:40:40.260 回答
0

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

于 2008-10-29T17:36:49.193 回答
0

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

于 2008-10-29T17:40:37.703 回答