【问题标题】:How to get rid of warning squiggles for WPP TraceEvent macro?如何摆脱 WPP TraceEvent 宏的警告曲线?
【发布时间】:2012-11-07 06:55:27
【问题描述】:

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

#define TraceEvents WPP_(CALL)
error: identifier WPP_Call_Foo_cppNNN not defined

好吧,它是在 WPP 预处理器创建的 .tmh 头文件中定义的,并且项目编译得很好。但 Visual Studio 不会扫描和/或识别此文件。
有没有一种实用的方法可以消除这些曲线?

【问题讨论】:

    标签: visual-studio visual-studio-2012 intellisense wdk


    【解决方案1】:

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

    #ifdef __INTELLISENSE__
    #undef TraceEvents
    #define TraceEvents(a,b,...)
    #endif
    

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

    【讨论】:

    • 现在我会使用条件#if defined(__INTELLISENSE__) && defined(TraceEvents)。我正在尝试确定是否有一种方法可以将 Visual Studio 2013 与 Visual Studio 2012 分开检测,因为较新版本中的 IntelliSense 解析器无需更改即可支持您的代码。
    【解决方案2】:

    为 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++ 编辑器关联:

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

    【讨论】:

      【解决方案3】:

      关闭Options->Text Editor->C/C++ -> Advanced中的Live Semantic Errors ...

      【讨论】:

      • 不完全是我的想法。仍应标记“真实”或假设“其他”错误/警告。
      • @VolkerK 不幸的是你有一个或另一个。您要么有所有警告/错误,要么没有。没有办法专门禁用警告/错误。抑制这种情况不是智能感知的工作方式(它在说单词时的方式)
      • 奇怪的是,宏定义在与TraceEvent 相同的文件中,可以通过“转到定义”导航到该文件。所以我希望在某个地方有一个(隐藏的)“深入了解,做一个完整的预处理器运行”选项:(
      • +1 无论如何,这不是我所希望的,但不应忽视当前状态的规范力量 ;-)
      • :-) 感谢VolkerK - 也​​为你的问题+1 - 好问题。我想知道为什么它没有得到足够的关注
      猜你喜欢
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2016-02-04
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多