これは機能します
printf("%s body\n",__PRETTY_FUNCTION__);
しかし、これはしません (エラーExpected ')'):
printf(__PRETTY_FUNCTION__" body\n");
__PRETTY_FUNCTION__なぜそれが機能しないのかを判断するための評価結果をIDE に表示させることができません。
これは機能します
printf("%s body\n",__PRETTY_FUNCTION__);
しかし、これはしません (エラーExpected ')'):
printf(__PRETTY_FUNCTION__" body\n");
__PRETTY_FUNCTION__なぜそれが機能しないのかを判断するための評価結果をIDE に表示させることができません。
__PRETTY_FUNCTION__はマクロではありません。これは、その関数でスコープされたオンザフライで作成された静的変数のように動作します。
上記のリンクの最後の段落は次のとおりです。
これらの識別子は、プリプロセッサ マクロではありません。GCC 3.3 以前では、C のみで、
__FUNCTION__文字__PRETTY_FUNCTION__列リテラルとして扱われました。これらは char 配列の初期化に使用でき、他の文字列リテラルと連結できました。GCC 3.4 以降では、 などの変数として扱います__func__。C++ では、__FUNCTION__常に__PRETTY_FUNCTION__変数でした。