在我的项目中,我有一个主cpp文件,其他任何文件都从构建中排除,我从主cpp文件中包含它们来创建一个翻译单元。这在VS 2013中完美地运行但是我在2015年遇到问题,其中任何未包含在构建中的cpp文件显示在其他cpp文件中定义的红色错误。项目构建正常,我可以F12到类型定义,但类型不会出现在intellisense中,并显示为错误。
有谁知道这是一个已知问题还是其他任何人都可以复制它 - 或者它是否与我的设置有关?
例如我有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;
}
这个版本但是intellisense不会显示来自Test.cpp的Foo,并且会在Foo下显示红色错误。
答案 0 :(得分:3)
我可以在Visual Studio 2015中复制您的问题。
从构建中排除文件不会在此处执行。由于您有效地将这些.cpp
文件用作头文件,因此需要向IntelliSense指示。
在这些文件的属性中,将Excluded From Build
设置还原为<inherit from parent or project defaults>
并将Item Type
设置为C/C++ header
(请记得All Configurations
和{{1}在顶部选中。)
此时,曲线仍在那里。保存并关闭解决方案,然后删除解决方案的All Platforms
文件(将自动重新创建)。重新打开解决方案,享受缺乏曲折的感觉。