.cpp文件中的Visual Studio 2015 IntelliSense #included as headers

时间:2015-08-09 19:49:10

标签: c++ intellisense visual-studio-2015

在我的项目中,我有一个主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下显示红色错误。

1 个答案:

答案 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文件(将自动重新创建)。重新打开解决方案,享受缺乏曲折的感觉。