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

Ste*_* Lu 3 c++ xcode function clang c-preprocessor

这有效

printf("%s body\n",__PRETTY_FUNCTION__);
Run Code Online (Sandbox Code Playgroud)

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

printf(__PRETTY_FUNCTION__" body\n");
Run Code Online (Sandbox Code Playgroud)

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

jxh*_*jxh 7

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

上面链接的最后一段是:

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