.cpp 文件中的 Visual Studio 2015 IntelliSense #included 作为标头
Posted
技术标签:
【中文标题】.cpp 文件中的 Visual Studio 2015 IntelliSense #included 作为标头【英文标题】:Visual Studio 2015 IntelliSense in .cpp files #included as headers 【发布时间】:2015-08-09 19:49:09 【问题描述】:在我的项目中,我有一个主 cpp 文件,并且任何其他文件都从构建中排除,我将它们从主 cpp 文件中包含以创建一个翻译单元。这在 VS 2013 中完美运行,但是我在 2015 年遇到问题,其中未包含在构建显示类型中的任何 cpp 文件在其他 cpp 文件中定义的类型显示为红色错误。项目构建良好,我可以 F12 到类型定义,但类型不会出现在智能感知中并显示为错误。
有谁知道这是否是一个已知问题,或者其他任何人都可以复制它 - 还是我的设置特有的问题?
例如我有 main.cpp
struct Foo
int Bar;
;
#include "Test.cpp"
int main()
Foo x = Test();
return 0;
以及使用 VS UI 从构建中排除的 Test.cpp。
Foo Test()
Foo x;
x.Bar = 2;
return x;
这会构建,但智能感知不会显示来自 Test.cpp 的 Foo,并且会在 Foo 下显示红色错误。
【问题讨论】:
很抱歉我错过了分号和双引号。当我问这个问题时,我正在重新安装 VS。尽管这与我的要求没有什么不同。更新后的代码 sn-p 在 Visual Studio 2013 中运行良好,但我在 2015 年遇到了所描述的问题。 【参考方案1】:我可以在 Visual Studio 2015 中复制您的问题。
从构建中排除文件不会做你想要的。由于您有效地将这些 .cpp
文件用作头文件,因此您需要向 IntelliSense 指出这一点。
在这些文件的属性中,将Excluded From Build
设置恢复为<inherit from parent or project defaults>
并将Item Type
设置为C/C++ header
(记得在顶部选择All Configurations
和All Platforms
)。
此时,曲线仍然存在。保存并关闭解决方案,然后删除解决方案的.sdf
文件(它将自动重新创建)。重新打开解决方案,享受没有曲线的乐趣。
【讨论】:
太棒了!这就是问题所在。我将类型更改为“不参与构建”而不是 c 标头,它的工作方式与 2013 年完全相同!感谢您的帮助。 我也有同样的问题,但是对于 boost 库来说,scoped_ptr.hpp。我已经在“包含目录”中指定了 boost 目录,并且 Intellisense 在 #include#include
它们作为外部文件,因此它们不应出现在.vcxproj
内的列表中。根据我的经验,IntelliSense 的许多问题都可以通过如上所述重建索引文件来解决。格式在最近的版本中发生了变化,扩展名为.VC.db
。我也会清理解决方案的中间输出文件,以便更好地衡量。以上是关于.cpp 文件中的 Visual Studio 2015 IntelliSense #included 作为标头的主要内容,如果未能解决你的问题,请参考以下文章
什么是在 Visual Studio 2012 的新 C++ 项目中自动创建的 stdafx.cpp 文件
Visual Studio 2019 未运行其他 .cpp 文件
microsoft visual studio创建button背景颜色代码