使用 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】:只是把它扔在那里,你正在使用namespace
std
?例如:
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 中进行智能感知的主要内容,如果未能解决你的问题,请参考以下文章