当我执行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
假设完全针对Release版本进行编译。我需要做什么才能使编译完整?感谢。
答案 0 :(得分:2)
__WFILE__
宏的定义导致了问题。有两种方法可以解决这个问题。首先,您可以定义宏,如下所示:
http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
请注意,它们不会将宏包装在#ifdef _DEBUG
中,这是有道理的,因为在发布模式下也不会删除相应的__FILE__
宏。
但该文档适用于VS2005。它已从较新版本的文档中删除。这就是你可能想要这样做的原因:
_T(__FILE__)
答案 1 :(得分:0)
首先,据我所知,它是__FILE__
,而不是__WFILE__
。这就是你得到逗号错误的原因。由于预处理器无法找到它。
其次,为什么要在每个TRACE中写下最后三个参数? TRACE是一个MACRO,对吧?
所以你可以像这样定义:(另见定义__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")
你已经完成了!