Visual Studio 2010 C ++智能感知错误

时间:2012-01-26 21:22:34

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

我在VS 2010中遇到了一个奇怪的智能感知错误。我在互联网上搜索没有运气。似乎以前没有其他人得到过这个错误。

IntelliSense: PCH warning: header stop needs to be at global scope. 
An intellisense PCH file was not generated.

在停止索引时会出现这么多其他错误。这种情况发生在我添加的最近文件中。我的项目中有很多文件(278),这种情况发生在最近的5-6个文件中。可能是我做了一些它不喜欢或可能存在限制的事情。

由于即使在文档中我也找不到此错误,我想了解原因以及可能的解决方案。请注意,我试图删除ipch文件夹和sdf文件,以使它们生成新的。错误被赋予文件的最后一行。我的代码大量使用模板。

编辑:
我注意到我的ipch文件夹大多是空的。这可能意味着整个预编译的头文件生成失败,而不是那些文件。仍然,intellisense部分工作,但不适用于那些文件。

3 个答案:

答案 0 :(得分:5)

当您忘记";"时会生成此错误在类声明之后,例如:

#ifndef _MYCLASS_H
class MyClass {
...
public:
...
}

#endif <--- VS2010 report here the error PCH: warning...

如果你放了&#34 ;;&#34;关闭后#34;}&#34;错误消失了。我并不是说这是唯一的原因,我只是说我发现了错误的错误&#34 ;;&#34;在上述地方。

答案 1 :(得分:4)

PCH代表&#34;预编译标题&#34; - 您需要确保正确配置这些内容。

错误消息似乎是说标题配置为&#39;停止&#39;预编译头文件以嵌套方式包含(即,其他一些标头包括它)。默认情况下,解决方案会使用stdafx.h作为&#39;停止&#39;标题和惯用法是stdafx.h将成为任何.cpp.c文件中包含的第一个标头。不要在任何其他标题中加入stdafx.h

有关智能感知如何工作以及如何解决问题的最佳信息来自Visual C++ Team Blog

一些可能有帮助的文章:

答案 2 :(得分:0)

我最初的感觉是,它可能是一个文件编码问题,但无论如何,这就是我如何解决这个问题......

创建一个全新的解决方案,intellisense有效吗?如果没有,则可能需要重新安装VS.

如果intellisense在不同的解决方案中工作,那么有两种可能性:解决方案中的某些内容很棘手,或者文件夹层次结构中的某些内容很棘手(可能是权限?)

我将删除整个解决方案文件夹并从源代码管理中获取最新信息。

如果在此之后仍然发生并且你真的想找到原因,那么你可以从项目中删除一大堆文件,看看intellisense现在是否有效,删除更多...直到a)你用完了文件或b)您找到导致错误的文件。

如果a)然后制作一个全新的解决方案并将文件和项目添加到其中。如果可行,那么将新的解决方案/项目文件与旧文件进行比较,看看有什么不同。

如果b)然后重新添加文件并开始修剪,直到找到有问题的行。