如何摆脱WPP TraceEvent宏的警告波形?

Vol*_*erK 10 intellisense wdk visual-studio visual-studio-2012

在Visual Studio(2012)中使用WPP时,每个出现的TraceEvents(...)都有一个波浪下划线,帮助文本是例如

#define TraceEvents WPP_(CALL)
error: identifier WPP_Call_Foo_cppNNN not defined
Run Code Online (Sandbox Code Playgroud)

好吧,它是在WPP预处理器创建的.tmh头文件中定义的,项目编译得很好.但Visual Studio不扫描和/或识别此文件.
是否有摆脱那些波浪的实用方法?

Vol*_*erK 5

现在我通过放置来解决这个问题

#ifdef __INTELLISENSE__
#undef TraceEvents
#define TraceEvents(a,b,...)
#endif
Run Code Online (Sandbox Code Playgroud)

在所有文件中 .tmh 之后包含的头文件之一中。http://blogs.msdn.com/b/vcblog/archive/2011/03/29/10146895.aspx 中提到了
定义__INTELLISENSE__


Sam*_*ell 4

针对 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文件存在),执行项目 → 重新扫描解决方案命令。

我还建议您通过以下步骤将文件与 C++ 编辑器关联:

  1. 打开工具 → 选项... → 文本编辑器 → 文件扩展名
  2. 将扩展tmh与编辑器Microsoft Visual C++ 关联