我不得不重置设置......
C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE> devenv.exe / ResetSettings
在这里线程
我最近在VS2008中研究过Intellisense,因为我正在开发一个相当大的C ++数值线性代数库,模板等广泛使用。 Intellisense很快就停止了进入项目,我有点放弃,但现在没有它就变得非常烦人,所以我开始调查。这是我发现的:
假设有一个文件,包含“打破”智能感知的代码,
#include
#if 0
/* .. */
//
从我使用的C ++功能,实际上只有几个断开Intellisense:
static_assert<(size > 0)>
static_assert<((size > 0))>
static_assert<0 < size>
function<type>(args)
Matrix::MakeMatrixType<3, 3>::Result r;
似乎其中一些问题是由于某些“简化”解析造成的,这种解析不如正确的C ++解析器强。有了上述信息,可以在现有代码中使用Intellisense的“可靠”方法:
void main() {}
math.h
sin(
我发现很容易找到导致问题的代码位置(我意识到这对于真正的大型项目来说可能是不可行的,在我的情况下,只有97个问题中的单个文件存在问题)。请注意,这里的“Build”是指编译,链接阶段不需要完成,因此未解析的外部是可以的,IS应该更新。
更新IS(除了构建)的另一种方法是保存所有内容,关闭工作区,删除.ncb文件并重新打开它。然后等待'更新智能感知......(N)'从状态栏中消失(N计为零,如果它不是一直进行,它会显示出现问题的进度)。我觉得这很乏味。
我不使用VS2008 for C ++,只使用VB&amp; C#,但我发现当intellisense停止工作时(对VS2003 / 2005/2008来说是真的),这是因为项目/文件中的某些内容被破坏了 - 通常是错误的引用或代码。
VB和C#具有更好的智能感知支持,因为能够反映引用的程序集以构建智能感知树。
C ++必须遍历函数原型的包含文件,如果路径不正确,它将找不到所有的原型头。
关于这个问题,我注意到一些有趣的东西(在Visual Studio 2010上): 为了解决这个问题我改变了 #include sintax在我的头文件中,之前是(使用VS 2005完成旧项目并使用VS 2010重新打开):
#include <myfile.h>
我解决这个问题:
#include "myfile.h"
智能感知开始正常工作后! 我希望这可以帮助你!
问题出在.vcproj文件中。
如果你从调试模式切换到发布模式,构建,然后尝试intellisense它经常工作。
关闭Visual Studio。如果在项目中搜索.vcproj文件,请编辑它们并搜索AdditionalIncludeDirectories的前两个实例。这个值应该看起来像“.. \,.... \”而不是“../ ..”。
重新打开你的项目,让Intellisense完成构建,然后它应该被修复。
您是否安装(或卸载)了任何加载项?我发现这种效果是我的智能感知。
除此之外,只需确认您的工具 - >选项 - >文本编辑器 - >所有语言“自动列表成员”和“参数信息”。
我有一个非常讨厌的问题,intellisense只在一些文件中工作,没有任何明显的原因......它花了我几个小时的时间挖掘谷歌,但我终于明白,原因确实是递归参考! 我用的是:
#ifndef CLASS_H #define CLASS_H ... #endif
避免重新定义符号,这有时会破坏大型项目中的智能感知。
但它足以评论ifndef-define-endif并放一个:
#pragma once
在头文件的开头仍然避免重新定义并让Intellisense再次工作=)=)
至少,这对我有用,希望它有用......
干杯 弗朗切斯科