如何使IntelliSense在Visual Studio 2008中可靠地工作

时间:2020-03-05 18:46:25  来源:igfitidea点击:

有谁知道在C / C ++项目中工作时如何使IntelliSense可靠地工作?似乎可以在十分之一的文件中工作。 Visual Studio 2005似乎比2008年要好得多。

编辑:虽然不一定是解决方案,但此处提供了解决方法:

如何使IntelliSense在Visual Studio 2008中可靠地工作

如果我想要一个不错的IntelliSense系统,可能是最好的选择。

解决方案

回答

本机C ++ intellisense在任何版本的Visual Studio中均无法可靠运行。我发现有两个常见问题:

1)头文件路径设置不正确。当我们发现无法使用智能感知的类型时,请使用IDE单击每个头文件以查找包含该类型的头文件。 (右键单击#include,然后选择"打开文档..."。)。如果在访问声明类型的文件之前失败,那么这就是问题。确保头文件搜索路径设置正确。

和,

2)智能感知数据库已损坏。这事儿常常发生。我们需要关闭解决方案,删除.ncb文件,然后重新打开解决方案。我在此发布了我用于此操作的宏,以回答另一个问题。

预处理程序还会混淆智能感知,因此请确保构建期间的任何#define也可用于智能感知。除此之外,我不知道还有什么可以打破它的。我没有看到任何有关前向声明的特殊问题。

回答

I don't use VS2008 for C++, only VB & C#, but I find that when intellisense stops working (true for VS2003/2005/2008) it's because something in the project/file is broken - usually a bad reference or code.

VB和Chave更好地提供了智能感知支持,这是因为它能够反映引用的程序集来构建智能感知树。

C ++必须遍历函数原型的包含文件,如果路径不正确,它将找不到所有原型头。

回答

@约翰·理查森(John Richardson)/ @乔纳森·霍兰德(Jonathan Holland)

我的包含物安装正确,那里没有问题。我也尝试过几次NCB重建,但从未将其100%修复。

我觉得这可能与类的前向声明有关。例如为了降低头文件中包含的复杂性,我们通常执行以下操作:

class MyPredeclared;

class SomeOtherClass
{
private:
    MyPredeclared* m_pPointer;
}

我想知道这是否会解决问题吗?还有其他想法吗?项目越大,情况肯定越糟。

回答

我们是否已安装(或者卸载)任何加载项?我发现这会影响我的智力。

除此之外,只需确保已选中工具->选项->文本编辑器->所有语言"自动列表成员"和"参数信息"。

回答

我还意识到,在某些大型项目中,Intellisense有时会"丢失"。为什么?不知道。

这就是为什么我们购买了Visual Assist(来自Tomato软件)并通过删除Visual Studio子目录(C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ vcpackages)中的dll feacp.dll来禁用Intellisense的原因。

这不是解决方案,只是一种解决方法。

回答

对于那些无法获得Visual Assist的人来说,似乎充满了希望:

重建智能感知

回答

在那个可怕的重构实用程序切碎了我的代码之后,需要对itellisense进行修复。问题是类头文件本身包含#include。递归引用破坏了itellisense。这种现象的一个征兆是itellisense是否可以看到其他类,但不能看到当前的类。还:

一次使用#pragma消除重复的标头加载

如果现在加载该项目花费的时间要长得多,那么itellisense试图弄清正在引起的冲突,那么将缺少完成支持。

通常它只是一个受影响的类对象,它向我们显示要查看的文件(通常是标头)。