Visual C++代码模型

null

嗨,我叫维托塔斯 莱昂纳维č我是VC++IDE开发团队的新成员。我的重点领域是风险投资 向导和VC++代码模型(CM)。今天,我想谈谈CM的未来。

一句话(实际上是两句话) J ),VC++CM是类的集合,允许客户机获取反映在对象中的源代码。对象具有读写属性,因此,例如,vcodeclass.Name允许您获取类的名称。它还允许您通过为Name属性指定不同的值来重命名类。有关VC++CM的更多信息,请参见MSDN: http://msdn2.microsoft.com/en-us/library/t41260xs(对80).aspx

VC++CM由各种visualstudio组件使用。特别是VC++向导和类设计器使用它。这样的体系结构通过推迟源代码操作大大简化了这些组件 s 到CM。

当前C++智能感知、类视图、CM和其他组件使用NCB作为基础数据库。正如杰森在他的帖子中提到的 http://blogs.msdn.com/vcblog/archive/2006/08/16/thoughts-on-the-visual-c-abstract-syntax-tree-ast.aspx ,在VC10中,我们将移动到 新建筑。我们希望改进CM的以下方面:

· 由于CM是基于NCB的,所以它必须做额外的C++代码解析。这主要是由于NCB架构的限制,其中没有为源代码元素提供列信息(C++程序可以用一行写入)。新的架构将提供列信息。进行大量文本处理的方法,如VCCodeElement.StartPointOf,将变得更快。

· NCB最初的设计并不是为了支持模板和名称空间。尽管国家编目局今天支持这两种方案,但这种支持还远远不够完美。这会导致VC++CM中的处理开销和各种正确性问题。新架构是从头开始设计的,并考虑到现代C++编码现实。

· NCB包含一个宏状态下的源代码快照。也就是说,如果我们有这样的代码:

#定义

#ifdef公司

A{};

#其他

B类{};

#结束

只有甲级才能进入国家编目局。新的架构基于不同的原则。数据库将包含这两个定义,CM将能够在这个场景中提供源代码的真实反映。

· VCCodeElement.CodeElementFromFullName/VCCodeElement.CodeTypeFromFullName将支持通配符。

· 我们希望VCCodeModel.Synchronize会变得更快,因为底层数据库的填充将基于与现在不同的原则。

VC++团队期待您的反馈。欢迎对我们如何改进VC++代码模型提出任何建议、意见和反馈。

VYTAs/Visual C++

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享