Visual Studio 2015 .cpp文件中的智能感知#作为头文件包含

Visual Studio 2015 IntelliSense in .cpp files #included as headers

本文关键字:文件包 感知 智能 2015 Studio cpp 文件 Visual      更新时间:2023-10-16

在我的项目中,我有一个主cpp文件,任何其他文件都从构建中排除,我从主cpp文件中包含它们以创建一个翻译单元。这在VS 2013中工作得很好,但是我在2015年遇到了问题,在其他cpp文件中定义的构建显示类型中没有包含任何cpp文件,其中有红色错误。项目构建良好,我可以F12类型定义,但类型不出现在智能感知中,并显示为错误。

有没有人知道这是一个已知的问题,或者可以复制它-或者它是特定于我的设置?

例如main.cpp

struct Foo
{
    int Bar;
};
#include "Test.cpp"
int main()
{
    Foo x = Test();
    return 0;
}

和Test.cpp,它被排除在使用VS UI的构建之外。

Foo Test()
{
    Foo x;
    x.Bar = 2;
    return x;
}

这样构建,但是智能感知不会从Test.cpp中显示Foo,并且会在Foo下显示红色错误。

我可以在Visual Studio 2015中复制您的问题。

从构建中排除这些文件并不能达到您想要的效果。由于您正在有效地使用这些.cpp文件作为头文件,因此您需要将其指示给IntelliSense。

在这些文件的属性中,将Excluded From Build设置为<inherit from parent or project defaults>,将Item Type设置为C/C++ header(记住在顶部选择All ConfigurationsAll Platforms)。

在这一点上,弯弯曲曲仍然在那里。保存并关闭解决方案,然后删除解决方案的.sdf文件(它将自动重新创建)。重新打开解决方案,享受没有乱画的乐趣。

相关文章: