__FUNCTION__和朋友在Xcode中表现得很奇怪

时间:2012-06-21 16:39:07

标签: c++ xcode function clang c-preprocessor

这有效

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

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

printf(__PRETTY_FUNCTION__" body\n");

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

1 个答案:

答案 0 :(得分:7)

__PRETTY_FUNCTION__ is not a macro。它的行为类似于在该函数中作用的动态创建的静态变量。

上面链接中的最后一段是:

  

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