2010-12-14 7 views
0

私は私のVisual Studio 2008のソリューションのリリースビルドを行うと、私はこのようなエラーの束を得る:TRACEマクロ - C++

エラーC2059:構文エラー:「」

これは、私は通常、TRACEを使用する方法である:

TRACE(_T("My error message.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__); 

私は5つのパラメータでそれを使用する場合もあります。

TRACEは、リリースビルド用に完全にコンパイルすると考えていました。コンパイルを完了するためには何が必要ですか?ありがとう。

+0

私はそれについては分かりません。他にどんなエラーがありますか? –

+0

投稿に記載されているエラーは、私が得た唯一のものです。それらの一束は、 'TRACE'が使用されるたびに1度です。 –

+0

は '__WFILE__'が正しく定義されていますか?あなたは前処理パスを行うことでチェックすることができます... – lijie

答えて

2

__WFILE__マクロの定義が問題の原因です。これを解決するには2つの方法があります。まず、ここに示したように、あなたは、マクロを定義することができます。

http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx

注彼らは、対応する__FILE__マクロがいずれかのリリースモードで削除されていないので、理にかなって#ifdef _DEBUGでマクロを、ラップしないでください。

しかし、このドキュメントはVS2005用です。新しいバージョンのドキュメントからは削除されました。だからあなたはこれをしたいかもしれません:

_T(__FILE__) 
0

まず、__FILE__私が知っている限り、__WFILE__ではありません。あなたはそのカンマエラーを取得します。プリプロセッサはそれを見つけることができないので。

第2に、なぜそれぞれのTRACEに最後の3つのパラメータを書いていますか? TRACEはMACROです、そうですか?

だからあなたはこのようにそれを定義することができます。今すぐ

#define FULL_TRACE //define FULL_TRACE here 
#define __WFILE__ L##__FILE__ //since __WFILE__ is not a real macro in MCVC++ 
#define TRACE(msg) FULL_TRACE(msg, ::GetLastError(), __WFILE__, __FUNCTION__, __LINE__) 

(マクロ__WFILE__の定義も参照)、あなたはこの

TRACE("Error in I/O file") 

のようにトレースすることができますすれば完了です!