智能感知包括不应包含的内容
IntelliSense Including Things that Shouldn't be Included
我正在Visual Studio 2010中做一个项目。我的项目不应该局限于Windows,然而,其中一个文件是操作系统相关的。
由于这个原因,我在.cpp文件的中只有中的#include <windows.h>
。没有其他文件包含这个.cpp文件。因此,从逻辑上讲,windows.h
头应该对解决方案的其余部分不可见。
这意味着除了.cpp之外,我在所有文件中与Windows库中的声明没有任何名称冲突,并且我的项目编译得很好。
然而,IntelliSense一直坚持认为我有名称冲突。当我按下Ctrl+Space
时,智能感知提示来自windows.h
的标识符。这是在windows.h
应该是不可见的范围!
是否有一个设置我可以改变来停止这个恼人的行为?
我100%肯定这个问题不是我的解决方案的结构,因为如果我在我的项目的另一部分使用windows.h
中已经定义的标识符,编译器不识别它,它不编译…但智能感知识别它!
引用微软vc++员工Andy Rich对这篇博客文章的评论:智能感知缓慢的故障排除技巧
浏览数据库将找到以某种方式包含在项目中的所有源文件,无论是直接包含还是作为其他#include指令的结果。这是不可配置的,并且为了让IDE能够提供准确的答案,这是必要的。
所以不幸的是,答案是否定的,除了完全禁用智能感知之外,你什么也做不了。
由于IntelliSense工作在每个项目基础(.vcproj)上,而不是每个解决方案(.sln)上,因此简单的答案是将特定于windows的部分移动到解决方案中它们自己的项目中。
这也有助于移植,因为您可以更容易地替换特定于windows的部分。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 什么是正确的 macOS vscode 智能感知C++包含标准库的路径?
- 智能感知包括不应包含的内容
- 预编译头,重新包含文件和智能感知
- Visual Studio 2015 .cpp文件中的智能感知#作为头文件包含