2011-01-23 4 views
2

は、Linux上でワイド文字として__FUNCTION__を印刷する方法はありますか?Linux上の__FUNCTION__のワイドバージョン

WIDENのトリックは私のためには機能しません、gccコンパイラが表示します: エラー:?L_ ファンクション _?この範囲で宣言されていません

助けてください? ありがとう

+0

あなたは、次のページに似たWIDENマクロを使用していますか?http://stackoverflow.com/questions/3291047/how-do-i-print-the-string-which-file-expands-to-correctly/3291315# 3291315 – VestniK

答えて

0

これは、正確なエラーメッセージを貼り付けた場合、widen()などの問題よりも、__FUNCTION__のタイプミスのように見えます。

+0

__FUNCTION__は、コード内の各関数でコンパイラによってインスタンス化された変数名です。この変数はASCII表現(char *)で宣言されています。したがって、wcscopyを使用して新しいワイド文字を割り当てたりコピーしたりすることなく、これを使用してワイド文字に変換することはできません。 – sramij

1

マクロを使用して行うことができます。マクロの展開方法を理解するだけで済みます。すべての重要な部分は、コンパイラの前に文字列定数にLの文字を追加Lの##のxは

#define WIDE2(x) L##x 
#define WIDECHAR(x) WIDE2(x) 

#define WIDE_FUNCTION WIDECHAR(__FUNCTION__) 

:あなたがそうのようなマクロの2層を作成する必要がマクロのワイド文字版を入手するには それを見る。これを同じテクニックを使用してFILEにも行うことができます。

+0

VS 2013では動作しますが、GCCでは動作しません(v4.9.3で疲れます)。エラーメッセージ: StringMacros.h:16:18:エラー: '' L__FUNCTION__ 'の前に' ') #define WIDE2(x)L ## x – codesniffer

関連する問題