即使在C ++中没有反射,visual studio intellisense如何识别类中的函数和属性?

时间:2010-03-16 14:57:50

标签: c++ visual-studio reflection intellisense

我想列出c ++类中的属性和函数。该功能是否已在任何库中实现? visual studio intellisense是否使用任何库?该库是否可以从Microsoft公开获取?

4 个答案:

答案 0 :(得分:8)

Visual Studio会解析您的代码,这就是它所知道的。你需要做同样的事情。

答案 1 :(得分:5)

他们使用适当的格式存储智能感知信息(它们保存为NCB文件)。如果出现问题,您可以删除这些文件以强制VS重新创建其智能感知数据库。

然后他们扫描头文件以获取类信息以及依赖关系,然后构建NCB文件以供将来参考。

不,此库不可供个人使用。

C#中的Intellisense比C ++中的Intellisense要好很多 VS2010将看到C ++具有与C#目前相同的智能感知功能。

答案 2 :(得分:5)

Visual C++ team maintains a blog有几篇关于IntelliSense过去如何运作以及未来如何运作的非常好的文章:

基本上,他们通过解析标题和其他源文件 - 使用自定义解析器和解析它们来构建他们自己的'反射'数据库(当前和过去的版本VS VS中的.ncb文件,使用从VS2010开始的紧凑型SQL数据库)。完成了编译器的合作。

显然,至少有一些信息可以在VCCodeModel和Visual Studio可扩展性模型提供的相关接口中找到。我不知道可扩展性模型的工作原理或使用起来有多容易。

答案 3 :(得分:0)

我认为Visual Studio使用头文件来提供Intellisense。