这有效
printf("%s body\n",__PRETTY_FUNCTION__);
但这不是(错误Expected ')'
):
printf(__PRETTY_FUNCTION__" body\n");
我无法让IDE向我展示__PRETTY_FUNCTION__
评估的内容以确定它不起作用的原因。
答案 0 :(得分:7)
__PRETTY_FUNCTION__
is not a macro。它的行为类似于在该函数中作用的动态创建的静态变量。
上面链接中的最后一段是:
这些标识符不是预处理器宏。在GCC 3.3及更早版本中,仅在C中,
__FUNCTION__
和__PRETTY_FUNCTION__
被视为字符串文字;它们可以用于初始化char数组,并且可以与其他字符串文字连接。 GCC 3.4及更高版本将它们视为变量,如__func__
。在C ++中,__FUNCTION__
和__PRETTY_FUNCTION__
一直是变量。