我正在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/