使用Visual Studio 2008,我在输出窗口中不断看到此错误:
我的代码中散布着许多TRACE
宏,这些宏用于转储有关错误状况的信息:文件路径,行号,错误等。我需要跟踪此错误的来源,因为它可能是它试图转储的信息到输出窗口太长。 TRACE
宏可以接受的最大字符串长度是多少?这是我通常如何使用此宏的示例:
TRACE(_T("CreateNotifyWindow : Failed to create handle for notify window thread.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), _T(__FILE__), __LINE__);
任何想法将不胜感激。谢谢。
最佳答案
最终,我敢打赌,问题是将对象字符串而不是string.c_str()传递给了宏。 TRACE使用可变参数传递给最终调用vsnprintf()系列中某些内容的对象,以便进行%s
处理。它不能处理对象,因为C
不能。
根据实现,OutputDebugString的最大长度为4K bytes minus a fraction。