【问题标题】:__FUNCTION__ and friends act weird in Xcode__FUNCTION__ 和朋友在 Xcode 中的行为很奇怪
【发布时间】:2012-06-23 23:03:01
【问题描述】:

这行得通

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

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

printf(__PRETTY_FUNCTION__" body\n");

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

【问题讨论】:

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


    【解决方案1】:

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

    上面链接的最后一段是:

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

    【讨论】:

    • @sixletter 不确定这是不是最好的参考,因为问题是关于 clang 的……但它也是我找到的第一个。
    • @KonradRudolph:令人困惑的是,clang 将其定义为 Microsoft 的宏,而不是其他平台的宏。
    • @sixletter 显然它的目标是最高的兼容性(根据 cmets)——这是有道理的,但是这很奇怪,因为 MSVC 甚至不知道 __PRETTY_FUNCTION__(并且 clang 开发人员甚至在评论)。
    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多