3

这有效

printf("%s body\n",__PRETTY_FUNCTION__);

但这不会(错误Expected ')'):

printf(__PRETTY_FUNCTION__" body\n");

我无法让 IDE 向我展示__PRETTY_FUNCTION__评估的内容以确定它为什么不起作用。

4

1 回答 1

7

__PRETTY_FUNCTION__不是宏。它的行为类似于在该函数中动态创建的静态变量。

上面链接中的最后一段内容如下:

这些标识符不是预处理器宏。在 GCC 3.3 及更早版本中,仅在 C 中,__FUNCTION__并被__PRETTY_FUNCTION__视为字符串文字;它们可用于初始化 char 数组,并且可以与其他字符串文字连接。GCC 3.4 及更高版本将它们视为变量,例如__func__. 在 C++ 中,__FUNCTION__一直__PRETTY_FUNCTION__都是变量。

于 2012-06-21T16:43:50.250 回答