2012-06-21 41 views
3

這工作__FUNCTION__朋友行事怪異的在Xcode

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

但這並不(錯誤Expected ')'):

printf(__PRETTY_FUNCTION__" body\n"); 

我不能讓IDE來告訴我該怎麼__PRETTY_FUNCTION__評估對確定它爲什麼不起作用。

回答

7

__PRETTY_FUNCTION__ is not a macro。它的行爲就像在該函數中作用域中創建的靜態變量。

鏈路中最後一段上面寫明:

這些標識符是不預處理宏。在GCC 3.3及更早版本中,僅在C中,__FUNCTION____PRETTY_FUNCTION__被視爲字符串文字;它們可以用來初始化char數組,並且可以將它們與其他字符串文字串聯起來。 GCC 3.4和更高版本將它們視爲變量,如__func__。在C++中,__FUNCTION____PRETTY_FUNCTION__一直是變量。

+0

@sixletter不確定這是最好的參考,因爲這個問題是關於鏗鏘聲...但這是我發現的第一個。 –

+0

@KonradRudolph:令人困惑的是,它看起來像是clang將其定義爲Microsoft的宏,但不適用於其他平臺。 – user7116

+0

另外,http://sackoverflow.com/a/3214150/340947 –