だから私は、コードコンパイル時に__func__をwchar_t []に変換できますか?
wchar_t funcName[] = __FUNCTIONW__;
のこのスニペットを持っていますが、__FUNCTIONW__
での問題は、私が望むすべてが関数名であるとき、それは名前でクラス情報を持っています。今__FUNCTIONW__
だけ
__func__
は、それが内部で使用されたときに、関数名を含む文字列変数に展開され、暗黙的に宣言された識別子である「L__func__が未定義の識別子」私は_CRT_WIDE(__func__)
を呼び出すことができると思い作った_CRT_WIDE(__FUNCTION__)
を呼び出しますが、それはエラーになります関数のそれはC99のCに追加されました。 C99から§6.4.2.2/ 1:
識別子
__func__
は暗黙翻訳者によって宣言され、直ちに各関数定義の開口ブレース、static const char __func__[] = "function-name";
が現れ宣言、関数を以下、あたかも-nameは、字句を囲む関数の名前です。この名前は、機能の未装飾の名前です。
これは、__func_がマクロではなく、前処理と関係がないことを意味すると思いますか?
コンパイル時にwchar_t配列を取得する別の方法はありますか?
'__func__'はマクロではないので、' _CRT_WIDE'マクロの前に 'L'を付けるとエラーになります。 –
同じ理由から、文字列連結àla '"こんにちは、私の名前は "__func__"です。 "... – Aconcagua