これは機能します
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__
変数でした。