我正在使用Visual Studio 2010中的项目。我的项目不应限于Windows,但其中一个文件依赖于操作系统。
出于这个原因,我只有 .cpp 文件的一个 #include <windows.h>
。没有其他文件包含此 .cpp 文件。因此,从逻辑上讲,windows.h
标题应该对解决方案的其余部分不可见。
这意味着我所有文件中的Windows库中的声明都没有名称冲突,但是 .cpp ,并且我的项目编译得很好。
但是,IntelliSense坚持认为我有名称冲突。当我按Ctrl+Space
时,IntelliSense会建议来自windows.h
的标识符。这是windows.h
应该不可见的范围!
我可以改变一个设置来阻止这种恼人的行为吗?
我100%肯定问题不在于我的解决方案的结构,因为如果我在项目的另一部分中使用windows.h
中已经定义的标识符,则编译器无法识别它并且它没有编译......但IntelliSense认出它!
答案 0 :(得分:2)
引用Andy Rich,一位从事VC ++工作的微软员工,来自对此博客文章的评论:Troubleshooting Tips for IntelliSense Slowness
浏览数据库将直接或作为其他#include指令的结果找到项目中包含的所有源文件。这是不可配置的,并且是必要的,以便IDE能够提供准确的答案。
所以很遗憾答案是否定的,除了完全禁用IntelliSense之外,你无能为力。
答案 1 :(得分:1)
由于IntelliSense适用于每个项目的基础(.vcproj),而不是每个解决方案(.sln),因此简单的答案是将Windows特定的部分移动到解决方案中的自己的项目中。
这也有助于移植,因为您可以更轻松地替换Windows特定的部分。