没有人知道如何获得智能感知,以可靠地工作工作时在C/C++的项目?它似乎工作的大约1/10的文件。Visual Studio2005年似乎是一个很好于2008年。

编辑:虽然不一定是一个解决方案,解决提供的:

如何获得智能感知,以可靠地工作Visual Studio2008

可能是最好的赌如果我想体面的IntelliSense系统。

有帮助吗?

解决方案

我也意识到于智能感知某个时候"丢失",在一些大项目。为什么?不知道。

这就是为什么我们已经买了 视觉协助 (从 番茄软件)和残疾Intellisense通过删除dll feacp.dll 在Visual studio子目录(C:\Program 文件\Visual Studio8\VC\vcpackages)

这不是一个解决办法,只是解决方法。

其他提示

地C++智能感知无法可靠地工作的任何版本的Visual Studio.我发现有两个常见的问题:

1)头文件中的路径不是设立正确。当你找到一个类型智能感知不工作,使用IDE通过点击每个标题的文件,以找到一个包含的类型。(右击#包括和选择开放文件...).如果失败在你得到的文件,该文件声明的类型,那么这就是你的问题。确保标题的文件搜索途径是设立正确。

而且,

2)智能感知数据库被损坏。这一切发生的时间。你需要关闭的解决方案,删除。国际刑警组织国家中心局的文件,然后重新打开解决方案。我发布的宏我利用这个在回答另一个问题 在这里,.


预处理器还可以混淆智能感知的,以便确保任何#定义期间建立也可提供给智能感知。除此之外,我不知道还有什么可以破坏它。我没有看到任何特别问题与向声明。

它看起来像有希望的地平线对我们这些无法获得视觉协助:

重建Intellisense

你有任何添加接安装(或卸载)?我找到这效果我的智能感知。

除此之外,只是确保你的工具->的选择->文本编辑器-->所有语文的"自动列表中的成员"和"参数的信息"检查断。

我不用VS2008C++,只有VB&C#但是我发现的时候intellisense停止工作(true VS2003/2005/2008年),这是因为一些在项目文件被破坏,通常是一个坏参考或代码。

VB和C#有更好的智能感知支持由于能够反映在所引用的议会,以建立智能感知树。

C++已经走的包括文件的功能原型,如果该路径都是不正确也不会找到的所有原型的标题。

我修复itellisense要求后,可怕的"重构"实用工具的碎我的代码。问题是一类标题的文件,其中包括一个#包括的本身。递归的参考破坏itellisense.一个症状是,如果itellisense可以看到其他的类别,但不是当前的一个。也:

使用#pragma一次,以消除重复的头负荷

如果项目现在需要很多长时间负载,itellisense试图为有意义的冲突,是造成后缺乏完成的支持。

往往是唯一的一个类对象,受到影响,这显示了你什么文件(通常为头)来看待。

@约翰*理查森 / @乔纳森*荷兰

我的包括设置正确,没有问题。我也试过国际刑警组织国家中心局重建的几倍,但是它从未修复了100%。

我有一种感觉,它可以做到与前申报的课程。例如减少复杂性包括在标题的文件,我们通常做的一样的东西:

class MyPredeclared;

class SomeOtherClass
{
private:
    MyPredeclared* m_pPointer;
}

我不知道如果这个螺丝?任何其他想法吗?它肯定是变得更糟的较大项目。

我有一个非常令人讨厌的问题,智能感知的工作只有在一些文件,没有任何明显的原因...我花了几个小时挖通过谷歌,但我终于理解的原因确实递归的。我是使用:

#ifndef CLASS_H
#define CLASS_H
...
#endif

为了避免重新确定的符号,而这有时会打破了智能感知在大型项目。

但这是不够的评论的ifndef定义-endif,并把:

#pragma once 

在开头的文件仍可避免重新定义和有Intellisense工作再次=)=)

至少,这个工作对我来说,希望它是有用的...

欢呼 弗朗西斯

我最近研究智能感知在VS2008,因为我正在开发一个相当大的C++数值线性代数图书馆,在那里的模板和这种使用广泛。Intellisense停止工作不久,到该项目和我放弃了,但是现在它成为真正讨厌的没有它,所以我设置进行调查。这是我发现了什么:

假设有一个文件(s),包含代码"休息"智能感知、

  • 如果标题的文件断Intellisense的项目,但不是 #included,它仍然有效的其他文件
  • 如果他们都包括在内,但没有类型声明的内部被使用,它仍然有效
  • 如果它们包括和类型声明的内部被使用,但可能仍然工作的一位(没有智能感知的成员,没有Intellisense后发生的特定类型,但至少全球的名称和参数的信息之前)
  • 如果智能感知是打破中的一个。cpp文件,它仍然可以工作的其他人哪里有问题的代码不包括在内或用于(但是我想象一下如果它撞坏,它将获得无障碍对整个项目,虽然这并没有发生在我身上)
  • Intellisense似乎是更新后的成功汇编(有时不前)
  • 把破碎的代码内的任何 #if 0, /* .. */// 似乎把Intellisense轻松自在

从C++的功能我用,实际上只有少数打破智能感知:

  • 与比较'>"或">='模板参数(例如 static_assert<(size > 0)>)
    • 不解决使用双括号(static_assert<((size > 0))> 没有帮助)
    • 解决了通过使用'<'或'<='代替(static_assert<0 < size> 工作)
    • 解决储存的价值在枚举,并使用专门的模板
  • 明确的功能专业化的模板禁用参数的信息(例如 function<type>(args))
    • 可能无法解决(也许包装在一个宏),但我可以生活在被打破
  • 化的模板的成员类型的,例如 Matrix::MakeMatrixType<3, 3>::Result r;
    • 一种很难弄清楚到底发生这种情况的原因(有可能是因为使用的特征)
    • 解决办法移动这样的代码,在一个单独的。cpp在那里是不会的工作(不总是可能的)

这似乎是其中的一些问题是由于一些"简化"解析,这是较强的比一个适当C++分析器。与上述信息一方面,一个"可靠的"方法的使Intellisense工作在一个现有的码:

  1. 设置了一个空的项目(a台应用程序),创建Main.cpp 用哑 void main() {} 在它。
  2. 包括你的一个破碎的头文件, math.h
  3. 建立(它必须汇编,以便为智能感知,以更新可靠地)
  4. 测试是否智能感知的工作,通过例如打字 sin( 和看到,如果参帮助。有时,这会的工作,但成员帮助不会的-所以试试那。
  5. 让某个实例在标题文件,建立,看到,如果用于管理杀。
  6. 删除码从罪犯的文件和步骤3
  7. 之后的寻找和固有问题的代码,把回代码的步骤5,再试一次
  8. 后一整类的工作,做一个实例,下节课,等等...

我发现它很容易这种方式来确定地点的代码,由的问题(我认识到,这可能是不可行的真正的大型项目,在我的情况下,只有一个单一文件出的97制的问题)。注意,'建立在这里指的是编制,连接阶段不需要完成,因此尚未解决的外部都确定,是应该更新。

另一种方法的更新(其他建筑)被保存的一切,关闭工作空间、删除。国家协调机构的文件和重新打开它。然后等待'更新Intellisense...(N)'消失的状态条(N算为零,如果不是所有的方法,这种显示了进展的问题发生).我发现这个相当繁琐。

关于这个问题,我们注意到一些有趣的东西(在Visual Studio2010):解决这个问题的我已经改变了 #include sintax在我的头文件,以前是(老项目完成VS2005年和重新开放使用VS2010年):

#include <myfile.h> 

和我解决这个:

#include "myfile.h"

后intellisense开始工作,正确!我希望这可以帮助!

我不得不重置设置...

C:\Program 文件\Visual Studio9.0\Common7\IDE>devenv.exe /ResetSettings

线在这里

问题是与。vcproj文件。

你会发现如果切换到释放模式,从调试模式,建立,然后再尝试intellisense它经常工作。

近Visual Studio.如果你搜索的.vcproj文件在项目中,编辑和搜索为首的两个实例AdditionalIncludeDirectories.值此看起来应该喜欢的东西"..\,....\" 而不是"../..".

重新项目,让智能感知建设完成,那么它应该是固定的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top