使用 c++ 在 vs2010 中进行智能感知

Posted

技术标签:

【中文标题】使用 c++ 在 vs2010 中进行智能感知【英文标题】:Intellisense in vs2010 with c++ 【发布时间】:2011-03-02 19:09:27 【问题描述】:

我无法让智能感知工作。即使我从一个空项目开始并仅向其中添加一个文件,其中仅包含 iostream 和一个 int main() 函数,该函数使用 cout (基本上是最基本的程序)打印一个字符,如果我尝试获取智能感知显示任何东西(比如输入cout.)我明白了

IntelliSense:“没有可用的其他信息”(请参阅​​“C++ 项目中的 IntelliSense 故障排除”以获得更多帮助。)

经过数小时的谷歌搜索,在 Microsoft 网站上发现了几篇文章,这些文章提出了许多可以尝试的方法或失败的原因。我已经尝试并消除了所有这些,除了提到stdafx.h 必须在路径中。

这个文件是什么? 如果我不知道它在哪里,我如何知道它是否在路径中? 它与 IntelliSense 有什么关系? 我应该将此文件添加到我的项目中以使其正常工作吗?

谢谢。

【问题讨论】:

您使用的是 C++ 还是 C++/CLI? 普通的 C++。 (至少,我认为我是。我没有选择任何特别的东西。我什至不确定 CLI 是什么) 如果你不使用预编译头文件,stdafx.h 不会是你的问题。检查以确保智能感知实际上已打开(在低端系统上,它实际上应该在 2010 年关闭,因为当它每 60 秒占用 100% 的 CPU 时,它几乎不可能进行编码)。当您包含iostream 并键入std:: 时,它是否会为您提供std 命名空间中可用类型的列表? 已开启。不,除了上述 std:: 的错误之外,它没有给出任何其他信息 【参考方案1】:

我通过http://connect.microsoft.com/VisualStudio/feedback/details/652838/intellisense-not-creating-ipch-folder 的微软团队解决了这个问题

这与安装在 WinXP 上的某个 Windows 更新有关。解决方案是安装 VS2010_SP1,然后对其进行特定更新。

【讨论】:

这是正确的答案,为了完成我建议您指定您的操作系统和安装的SP。 更具体一点,链接中说明:“要解决,必须安装VS2010 SP1,然后必须安装KB2526044。” 经过一番努力,我得到了 KB 的更新链接:support.microsoft.com/en-us/hotfix/KBHotfix.aspx?kbnum=2526044 @user666412 可以在这里找到windows-update-checker.com/Lists/…【参考方案2】:

看这个问题:C++ VS Express 2010 Intellisense

CTRL+J解决了。

编辑:可能是stdafx.h 问题!

在项目中添加一个文件stdafx.cpp和一个文件stdafx.h! 使用#include "stdafx.h" 作为所有 .cpp 文件中的第一行代码。 在stdafx.h 中包含所有很少/从不更改和经常使用的头文件。 在您的项目中打开预编译器头文件并重新构建项目。

(创建一个带有预编译头文件的虚拟项目,看看它是如何完成的)

【讨论】:

【参考方案3】:

你在打开visual studio时使用/UseEnv开关吗?它破坏了 c++ 项目的 Intellisense。

【讨论】:

【参考方案4】:

请在项目目录中找到 *.sdf 文件(智能数据库缓存)并将其删除并重新启动项目解决方案,这将恢复您的智能。

【讨论】:

这对我有用。没有缺点,因为数据库是在启动时重建的。【参考方案5】:

有几个关于类似问题的线程: 单击 VS2010 上的帮助并查找 Intellisense。

http://social.msdn.microsoft.com/Search/en-US?query=intellisense%20settings&refinement=123&beta=0&ac=1

http://social.msdn.microsoft.com/Forums/en/vswpfdesigner/thread/75c4cc8d-9a81-4bda-84f0-f619f7493b3b

stdafx.h 应在您创建新项目时自动添加。

From the file:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently

【讨论】:

【参考方案6】:

只是把它扔在那里,你正在使用namespacestd?例如:

std::cout.

因为如果没有看到cout,智能感知将无法工作

编辑:我仔细查看了该错误消息,所以情况并非如此,但留下答案以防它可能对某人有所帮助。

【讨论】:

【参考方案7】:

也许它从未安装过,您尝试过修复安装吗?值得一试..

【讨论】:

【参考方案8】:

我想我应该提到这一点:

Visual Studio 2012 中,我注意到 Intellisense 突然停止在我的 C++ 项目中工作(与海报描述的错误相同)。发生这种情况是因为我在 Project Properties -> C/C++ -> Preprocessor 下添加了“DEBUG”作为预处理器定义。

一旦我将其从该列表中删除,而是将其放入代码 (#define DEBUG) 中,智能感知突然又开始工作了。

我不知道为什么会这样,我只知道它搞砸了我的智能感知。我希望这对某人有所帮助。

【讨论】:

【参考方案9】:

WIN32;_WINDOWS;_DEBUG;追加_DEBUG; 删除附加_DEBUG;

【讨论】:

【参考方案10】:

baruch 的回答对我有用。为了完成,这里也是 VS2010-SP1 的链接: http://www.microsoft.com/en-us/download/details.aspx?id=23691

所以首先安装这个,然后 baruch 提到的热修复解决了我的问题,虽然整个安装花了将近 1:30 小时! (包括在我的 Win-XP 机器上重新启动一次。)

【讨论】:

【参考方案11】:

我知道这是一个老问题,但我遇到了类似的问题IntelliSense: 'No additional information available' (See 'Troubleshooting IntelliSense in C++ Projects' for further help.)。我的问题与stdafx.h 无关。

为了解决我的问题,我关闭了 VS2010,删除了 .sdf 和 .suo 文件以及项目主文件夹中的 ipch 目录。

然后我重新启动 VS2010,等待它再次构建其所有元数据并且 Intellisense(自动完成)运行良好。

编辑:我不知道这种“机动”是否有负面影响。

【讨论】:

【参考方案12】:

IntelliSense 将其数据存储在 SQL Server 中,该服务器在 VS2010 安装期间安装。我建议您检查 SQL Server 服务是否正在运行。

【讨论】:

social.msdn.microsoft.com/Forums/en/vstsdb/thread/…

以上是关于使用 c++ 在 vs2010 中进行智能感知的主要内容,如果未能解决你的问题,请参考以下文章

C++ VS Express 2010 智能感知

VS.NET C++ 2010 中智能感知和编译器的区别

VS2010 RC - 智能感知坏了吗?如何打开它?

可以在 #ifndef ... #endif 等预处理器指令块中的 VS2008 中启用智能感知吗

VS2010 - HLSL 智能感知?

vs.net 2005中web.config智能感知丢失时