VC智能感知历史-IntelliSense History, Part 1 大家好,我是Jim Springfield. 我要开始解释我们的计划,关于从根本上改变C / C + +的智能感知和代码浏览功能的工作方式。最近vs2005的GDR和vs2008的变化是很重要的,但他们并没有将这些特点的真正实现。这个文章涵盖了这个功能的历史,并帮助我们解释智能感知如何在vc10(VS2008的下一个Release)完成的情况。 大部分的摘要都是源自我记忆中的事件和安装所有这些Visual C + +旧版本的经验。 获取C或C + +程序的结构信息在微软的产品里已经有很长的一段时间了. 之前,甚至在Visual C + + 1.0 ,编译器就支持通过.SBR和.BSC文件生成程序信息。(注:编译器在Visual C + + 1.0已经是第8版,所以命令行工具已经存在一段时间了。) 。SBR文件包含编译时产生的一个单一转换单元的参考和定义。接下来用BSCMAKE工具将这些文件组合在一起生成BSC文件。这个文件可以用来研究程序的许多不同方面:参考,定义,调用-被调用的关系图,宏等。 自Visual C + +产品成立以来的,我们已经剖析C + +代码和它以某种形式为IDE使用的储存的信息。这个分析器已经从单独的命令行编译分离,因为IDE有很多功能需要基于对代码的理解,这种要求将在这些情况下带来沉重的负担。举例来说,在许多代码编辑的阶段,代码根本不是在一个可编译的状态,所以需要编译是不会被执行的。最早的IDE使用clw (类向导)文件来存储这方面的资料。这些文件结构和一个INI文件类似,常用在Windows的注册表被开发之前的16位系统上。这些只能提供最低限度的信息,如Class的定位和一些资源信息。用一个很简单的分析器产生这些clw文件,它没有处理模板或ANSI / Unicode的问题。此外,在文件里标示着注释的特殊位置不能修改。它在有效的时间里最低的支持类向导的要求,但它没有提供一个程序充足的信息。 在Visual C + + 4.0看到了一个新的功能: ClassView。 ClassView中显示的信息包括所有的类,类的成员,和全局变量。clw文件不能提供足够的信息,所以建立了一个新的分析器将信息存在一个新的NCB文件里。NCB是“no compile browse”的缩写。它提供了一些在建立BSC文件时需要的信息,但不是全部。 Visual C + +6.0为NCB文件的建立引入了新的分析器( feacp )。在内部被叫做“ YCB ”是因为“yes compile browse”的简称,尽管它仍然产生NCB文件。它被称为“yes compile browse” 是因为这个修改后的版本实际上在编译后产生的NCB。C + +语言随着加入与命名空间,模板,异常等变得越来越大,维护多个解析器并不是理想状况。clw的分析器至今仍在用来产生clw文件,VC6.0也引进的第一个“智能感知”功能,如自动完成和列出参数信息。 NCB文件非常类似BSC的文件,是为pdb文件基于一个多流制定的格式。NCB文件被加载到内存中并在内存里修改,关闭时再保存到NCB里。数据以层次结构存在内存和磁盘上,大多数查找都需要遍历这些数据结构。 在Visual C + + .net(即7.0 )里clw文件和相关的分析文件最后被删除,类向导功能放在NCB文件里实现。在7.1 , 8.0(Whidbey) , 9.0 ( orcas ) 里,没有太大的改变。在Whidbey里看到的最大的变化,是我们去掉了为库和SDK建立的预处理NCB文件,提供对宏更好地支持,并允许64K的文件在一个NCB里。这些都是增量改进,但总体结构保持不变。 随着NCB文件加入越来越多的功能,它成为IDE中一个核心的技术。如果其不正常,很多IDE的功能都不能用。feacp需要去处理大型的,复杂的,互相关联的文件和潜在不正确代码。当一个项目中一个共同的头文件被改变后,所有依赖它的文件都将reparsed来产生正确的信息。 注: feacp只会解析头文件本身,但所有依赖的cpp文件将reparsed,用来收集有用的信息。在这期间的问题总称为“multi-mod”(多模块引用),当一个头文件被多个模块使用时就会发生。 对大型工程项目而言,reparsing可能需要一段时间。最初,作为解析的UI线程会发生在前台,这造成了IDE被冻结。这个在更高版本用一个后台线程来解决。不过,也有一些情况下,前台用户界面需要显示结果,这时不管用什么方法都会冻结住。此外,这种频繁reparsing使用了大量的CPU和内存,用了太多的资源,仍然造成用户界面的问题。最终的调整是通过在一定程度上运行较低的线程优先级和延时到Idle时才reparsing来解决。另一种解决办法新增三种优先序列来排队工作,它可以让更多的重要工作第一时间处理。其他问题发生的原因是由于NCB文件无效或错误,导致在编译时不能从该文件获取有用信息。也有一些问题与NCB数据在内存中的并发和锁定有关。加入基于一个简单的查询快速地找到信息的能力是非常困难的,并要求更改代码。扩充NCB文件格式添加模板支持, C + +/ CLI,和其他的语言特点也被证明是困难的。 所有这些问题在更大,更复杂的项目都被加剧了。需要加以reparsed文件数目可能相当大而且reparsing的频率可能很高。此外, “间歇性”的失败在项目规模上升时更可能发生。所有这些问题已经看过随着时间的推移和一些渐进的修复已有所改善,但根本性的问题依然存在。 下一次,我将介绍这些问题在vc10的处理方式 ,这是我们当前工作的内容。 谢谢,Jim

--------------------------------------------------------------------------------------------------------------------------------------------------

C++ 项目中 IntelliSense 的故障排除

Visual Studio 2005
其他版本

  • Visual Studio 2010
  • Visual Studio 2008

在某些情况下,IntelliSense 会停止工作。使用以下过程有助于确定 IntelliSense 不能在 C++ 项目中正常工作的原因。

处理 C++ 项目中的 IntelliSense 失败

  1. 确保 Visual C++ 项目不包含任何编译错误。

    1. 如果项目为生成文件项目,则请参见如何:对生成文件项目启用 IntelliSense。

  2. 确保 stdafx.h 在包含路径中。有关 Visual C++ 项目中的包含路径的更多信息,请参见 #include 和 /I。

  3. 如果解决方案中包含 C++ 托管扩展和托管 C++ 新语法的组合,则请根据语言类型将解决方案拆分为多个解决方案。

  4. 如果前面的步骤都不能解决 IntelliSense 失败,则可能是解决方案的 .ncb 文件中有错误。

    1. 请复制 .ncb 文件并与产品支持服务部门联系。有关如何与 Microsoft 联系以获得技术支持的更多信息,请参见从 Microsoft 产品支持服务获得帮助 (Visual Studio)。

    2. 为解决方案重新生成 .ncb 文件。

重新生成 .ncb 文件

  1. 从解决方案中删除 .ncb 文件。

VC智能感知 clw ncb bsc文件的作用相关推荐

  1. VC智能感知 clw ncb bsc文件的作用[zz]

    http://www.cnblogs.com/zhengllg/archive/2008/09/11/1288545.html 大家好,我是Jim Springfield. 我要开始解释我们的计划,关 ...

  2. VC++中的各种文件的作用

    vc所支持的文件类型 : DSW:全称是Developer Studio Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成 D ...

  3. VC中的*.aps,*.ncb.*.opt文件分别是做什么用的???

    .clw   支持ClassWizard .ncb   支持ClassView .opt   保存工作空间的配置 .aps   支持ResourceView .bsc   浏览器信息文件 .dsp   ...

  4. 在Visual Studio中启用对jquery等javascript框架的智能感知

    http://www.cnblogs.com/tonybinlj/archive/2009/05/26/1490434.html 启用Visual Studio 对jQuery的智能感知 首先看一下V ...

  5. 启用Visual Studio 对jQuery的智能感知

    启用Visual Studio 对jQuery的智能感知 首先看一下Visual Studio带给我们的智能感知惊喜. 要让Visual Studio支持智能感知, 需要下列条件: 安装 VS2008 ...

  6. VS中*.clw *.ncb *.opt *.aps这些文件是做什么用的?

    最近在移植一些VS编写的程序,但是一些有特殊后缀的文件,我不知道该不该移植,因此记录一下,方便以后再查看和更快的完成任务. 通常,VS在建立一个工程之后,会出现*.clw *.ncb *.opt *. ...

  7. AutoCAD.net: 用于ObjectARX 开发的Visual Studio 智能感知文件

    用于ObjectARX 开发的Visual Studio 智能感知文件!下载解压后是三个相关的XML文件(accui.xml,acdbmgd.xml,acmgd.xml),把它们放到你的AutoCAD ...

  8. hutool 读取扩展名文件_Python OpenCV视觉智能感知第一讲——读取摄像头或视频文件并播放显示...

    Python OpenCV视觉智能感知 第一讲--读取摄像头或视频文件并播放显示 本部分内容将深入.全面.详细地介绍如何使用Anaconda Python和OpenCV读取摄像头或视频文件,并进行播放 ...

  9. 如何彻底禁用VS 2008的智能感知功能

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在发现VS 2008的智能感知做得真是烂得一坨.使用VS2008或者2005时候,当切换配置,总是显示"正 ...

最新文章

  1. 如何从从工程师跨步管理者,微博信息安全总经理手把手教你企业安全体系建设...
  2. POJ 3126 Prime Path BFS搜索
  3. BIOS系统服务 —— 直接磁盘服务(int 0x13)
  4. 【腾讯通服务器的消息集成解决方案】之与勤哲Excel服务器的集成
  5. matlab全景图像拼接_带你认识网络高清全景监控摄像机
  6. 计算机系统结构总概,计算机系统结构概论
  7. (2015-12-09)java.util.Arrays的用法
  8. HDU 1754线段树
  9. CPU缓存越大计算机的性能越好,CPU缓存真的越大越好?小心你的钱包
  10. 详细解析Java中抽象类和接口的区别(很容易理解错)
  11. 理想汽车2021年Q4盈利2.955亿元 CTO王凯离职
  12. 基于springboot+vue的大学生健康档案管理系统
  13. Open vStorage —— 虚拟化的存储路由系统
  14. html文字溢出怎样处理,css文本溢出处理
  15. 计算机自动弹回桌面,win10玩无主之地2自动返回桌面怎么办
  16. java正则表达式匹配任意中文_java匹配中文的正则表达式
  17. error: variable '__this_module' has initializer but incomplete type错误解决
  18. 敢不敢挑战,半年学好英语。
  19. 7时过2小时是几时_餐后2小时血糖正常值是多少?
  20. http://www.dewen.net.cn/q/16042/jquery fadeIn和fadeOut问题

热门文章

  1. 预算里怎样计算机械作业费,工程概预算计算题作业及其答案-.doc
  2. 计算机死机后重启什么丢失,电脑死机后丢失的数据怎么恢复?
  3. 自治系统 AS 及 BGP 协议的基础知识
  4. 淮阴工学院什么时候有计算机硕士点,建校62年,仅有1个硕士学位授权点,淮阴工学院因何入选卓越计划...
  5. CSS sprites原理,和优缺点
  6. 瑞云科技副总经理黄金进受邀出席2023广东超聚变生态伙伴大会并作主题演讲
  7. 花生壳让虚拟主机中的服务能在外网访问
  8. RabbitMQ-直连模型
  9. 压力传感器相关压力单位换算
  10. Android微信刷卡支付开发