在 Visual Studio (2012) 中使用WPPTraceEvents(...)
时,每次出现都有一个波浪下划线,帮助文本例如
#define TraceEvents WPP_(CALL)
error: identifier WPP_Call_Foo_cppNNN not defined
好吧,它是在 WPP 预处理器创建的 .tmh 头文件中定义的,并且项目编译得很好。但 Visual Studio 不会扫描和/或识别此文件。
有没有摆脱这些曲线的实用方法?
在 Visual Studio (2012) 中使用WPPTraceEvents(...)
时,每次出现都有一个波浪下划线,帮助文本例如
#define TraceEvents WPP_(CALL)
error: identifier WPP_Call_Foo_cppNNN not defined
好吧,它是在 WPP 预处理器创建的 .tmh 头文件中定义的,并且项目编译得很好。但 Visual Studio 不会扫描和/或识别此文件。
有没有摆脱这些曲线的实用方法?
现在我通过放置来解决这个问题
#ifdef __INTELLISENSE__
#undef TraceEvents
#define TraceEvents(a,b,...)
#endif
无论如何,在所有文件中包含在 .tmh 之后的头文件之一中。
该定义在http://blogs.msdn.com/b/vcblog/archive/2011/03/29/10146895.aspx__INTELLISENSE__
中提到
编辑 Visual Studio 2012:
看来您已达到 Visual Studio 2012 的 IntelliSense 引擎中预处理器的分析限制。如果将TraceEvents
引用替换为WPP_Call_Foo_cppNNN
,它实际上可以毫无问题地解析标识符(直到您重建解决方案并且tmh标头更改)。
解决方案是在 Visual Studio 2013 中加载解决方案,并选择不升级编译器工具链,从而保持与 Visual Studio 2012 的向后兼容性。
Visual Studio 2013 的先前答案:
这是在 Visual Studio 2013 中测试的,因此它可能不适用于 Visual Studio 2012。我找不到支持 Visual Studio 2012 的 WDK 版本,所以如果以下步骤不起作用。
构建项目后(确保.tmh文件存在),执行Project → Rescan Solution命令。
我还建议您通过以下步骤将文件与 C++ 编辑器关联:
关掉Live Semantic Errors
输入Options->Text Editor->C/C++ -> Advanced
...