3

これは機能します

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

しかし、これはしません (エラーExpected ')'):

printf(__PRETTY_FUNCTION__" body\n");

__PRETTY_FUNCTION__なぜそれが機能しないのかを判断するための評価結果をIDE に表示させることができません。

4

1 に答える 1

7

__PRETTY_FUNCTION__はマクロではありません。これは、その関数でスコープされたオンザフライで作成された静的変数のように動作します。

上記のリンクの最後の段落は次のとおりです。

これらの識別子は、プリプロセッサ マクロではありません。GCC 3.3 以前では、C のみで、__FUNCTION__文字__PRETTY_FUNCTION__列リテラルとして扱われました。これらは char 配列の初期化に使用でき、他の文字列リテラルと連結できました。GCC 3.4 以降では、 などの変数として扱います__func__。C++ では、__FUNCTION__常に__PRETTY_FUNCTION__変数でした。

于 2012-06-21T16:43:50.250 に答える