我正在Visual Studio 2010中的一个项目上工作。我的项目不应该局限于Windows,但是其中一个文件依赖于OS。

因此,我在.cpp文件中只有一个#include <windows.h>。没有其他文件包含此.cpp文件。因此,从逻辑上讲,windows.h头对于解决方案的其余部分应该是不可见的。

这意味着除了一个.cpp文件外,我没有其他文件中Windows库中的声明与任何名称冲突,并且我的项目可以正常编译。

但是,IntelliSense一直坚持认为我有名字冲突。当我按Ctrl+Space时,IntelliSense会提示windows.h中的标识符。这是windows.h不可见的范围!

我可以更改设置来停止这种烦人的行为吗?

我100%肯定问题不在于解决方案的结构,因为如果我在项目的另一部分中使用已经在windows.h中定义的标识符,则编译器将无法识别该标识符,因此无法编译。 。但是IntelliSense可以识别!

最佳答案

引用Microsoft员工VC ++的Andy Rich对此博客文章的评论:Troubleshooting Tips for IntelliSense Slowness


  浏览数据库将找到直接或由于其他#include指令而包含在项目中的所有源文件。这是不可配置的,并且是使IDE能够提供准确答案的必要条件。


因此,不幸的是答案是否定的,除了完全禁用IntelliSense外,您无能为力。

关于c++ - IntelliSense包括不应包含的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7666928/

10-12 00:01
查看更多