Visual Studio .cpp 文件中的 2015 IntelliSense #included as headers
Visual Studio 2015 IntelliSense in .cpp files #included as headers
在我的项目中,我有一个主 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 Configurations
和 All Platforms
在顶部选择)。
此时,波浪线还在。保存并关闭解决方案,然后删除解决方案的 .sdf
文件(它将自动重新创建)。重新打开解决方案并享受没有波浪线的感觉。
在我的项目中,我有一个主 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 Configurations
和 All Platforms
在顶部选择)。
此时,波浪线还在。保存并关闭解决方案,然后删除解决方案的 .sdf
文件(它将自动重新创建)。重新打开解决方案并享受没有波浪线的感觉。