【问题标题】:Including the CUB header triggers many Visual Studio Intellisense errors包含 CUB 标头会触发许多 Visual Studio Intellisense 错误
【发布时间】:2017-07-08 08:13:18
【问题描述】:

每当我包含<cub/cub.cuh> 头文件时,Visual Studio 的 IntelliSense 都会报告数以千计的错误。

正如您在随附的屏幕截图中所见,应用程序由空的 main() 函数和 include 行组成。

我在项目属性中定义了额外的包含目录和额外的库目录。我没有进行任何其他更改。

我的设置由visual studio community 2015cuda 8.0.61cub 1.7.0 库组成。

有什么办法可以解决这个错误吗?

【问题讨论】:

  • cub 使用 cuda,cuda 与 intellisense 不兼容,单个 cub 头文件会包含很多代码,因为它是一个模板库。 SO cuda 标签上有各种各样的问题,讨论智能感知错误以及可以采取的措施。或者,您可以让 VS2015 不报告这些类型的错误。
  • 是的,在我阅读了您的初稿并做出回应后,您将其编辑到了您的问题中。我已从我的第一条评论中删除了该声明。
  • @RobertCrovella 如何强制 VS2015 不报告这些错误?您是否考虑关闭 IntelliSense?
  • 在智能感知报告错误的窗口中,窗口顶部有一个选择框,当前在您的图片中显示“构建+智能感知”。如果您将其更改为“构建”,则智能感知错误将不会显示在该窗口中。我相信它们仍然会在您打开的任何代码编辑窗口中显示为下划线或类似内容。
  • 类似于问题here 中建议的内容,包含在您的幼崽标题之前。

标签: visual-studio-2015 cuda intellisense cub


【解决方案1】:

我要感谢 Robert Crovella 为我指明了正确的方向。

永久解决方案:

#ifndef __INTELLISENSE__

#include <cub/cub.cuh>

// And other troublesome libraries or code-blocks....

#endif

Visual Studio 的 __INTELLISENSE__ 宏仅在 Visual Studio 本身解析文件时定义,而不是在编译期间定义。因此,IntelliSense 算法不会检查上述代码块中的任何内容。


解决方法:(我第一次尝试解决此问题,可以忽略)。

第 1 步:
在 Visual Studio 的 Error List 窗口更改选项 Build + IntelliSenseBuild Only

第 2 步
在 Visual Studio 中转到:Tools &gt; Options &gt; Text Editor &gt; C/C++ &gt; Advanced 并将 Disable Error ReportingFalse 更改为 True

说明:
这将关闭 IntelliSense 错误检查功能,并通过扩展解决我的问题。这个部分解决方案将迫使我只依赖编译器(构建)输出,但这不是问题。

就像我说的,这个解决方案更像是一种解决方法,在 IntelliSense 功能中没有任何严重或严重的惩罚,而不是永久修复。 但它工作正常

缺点:

  1. 在我当前的项目中,有一些函数是 cub 包装器,这些函数有时不会被自动完成检测到。
  2. 此外,如果总错误计数达到 IntelliSense 限制,IntelliSense 将停止工作。 (edit:“没有任何严重或严重的惩罚”直接跳出窗口......)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多