0

当我对我的 Visual Studio 2008 解决方案进行发布构建时,我得到了一堆这样的错误:

错误 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应该为发布版本完全编译出来。我需要做什么才能使其编译完成?谢谢。

4

2 回答 2

2

__WFILE__宏的定义导致了问题。有两种方法可以解决这个问题。首先,您可以定义宏,如下所示:

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

请注意,它们不会将宏包装在 中#ifdef _DEBUG,这是有道理的,因为__FILE__在发布模式下也不会删除相应的宏。

但该文档适用于 VS2005。它已从较新版本的文档中删除。这就是您可能想要这样做的原因:

_T(__FILE__)
于 2010-12-14T17:25:41.413 回答
0

首先,__FILE__据我所知,不是__WFILE__。这就是您收到逗号错误的原因。由于预处理器无法找到它。

二、为什么要在每个TRACE中写最后三个参数?TRACE 是一个宏,对吧?

所以你可以这样定义它:(另见定义__WFILE__宏)

#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__)

现在,你可以像这样追踪

TRACE("Error in I/O file")

你完成了!

于 2010-12-14T17:24:34.610 回答