fileservice 类代码放哪里_C++代码索引Demo上线啦!

f1667d1ee95f2069be7cba9934c8c0ae.png

因为编译器还没支持template,所以现在放exe并没有什么意义,大家想自己把玩的话去 vczh-libraries/Document 自行修改,不过肯定还有大量的SDK头文件无法编译通过。生成后的网页可以在这里(http://gaclib.net/CodeIndexDemo/Calculator/Main.cpp.html)看到。

如果大家要自己编译出本Demo的话,首先需要编译一下UnitTest_Cases项目。这个项目是一定会失败的,显示无法读取某个obj,不过没关系我做这个项目的目的是为了让VC++帮我生成几个例子的文件。然后就可以运行UnitTest_ExecuteCases了。最后生成的文件就在UnitTest_Cases里面。大家认准文章发布前的最后一个commit,因为从明天开始我会把编译器里面跳过template的部分去掉,本Demo就会暂时无法编译成功长达两个月。

编译器在debug模式下运行奇慢无比,release模式下可以跟VC++的release有一拼,所以其实性能是很低的。不过没关系反正,最终这个程序是build的一部分,GacUI本身编译出一个完整的release都要1.5小时,跑这个文档目前估计可能要5-10分钟,根本无所谓(逃

这里主要展示的有以下几个方面:

1、生成了简单的文件索引(File Index)和符号索引(Symbol Index)。每一个文件滚到第一行都会有这两个按钮,难以忽略。

2、上下文有关着色。在这里体现为如果一个符号是类型名、函数名、类成员变量、函数参数或者枚举成员的话,他会变色。就跟Visual Studio Code的配色无比接近(因为我是截图mspaint取色写进css的(逃)

3、宏展开。由于我的程序接受的是cl.exe /P /C后的文件,所以我可以从这个文件里获得展开后的代码,并从一堆#line里面找到展开前的代码,因此就可以轻松计算出到底什么展开成了什么。在网页里面我用虚线框画了出来。展开前的代码我就不生成链接了,因为如果不是我亲自展开宏的话,问题就会变得过于困难。所以我只处理生成后的代码。

32c7c46362d755ae8507261ef7dee193.png

4、跳转。如果一个符号同时又有声明和定义的话,我就会弹个下拉框让你自己挑到底要跑到哪里去。同时我还会尽量自己计算重载决议的结果,不过一些小bug还是存在的,譬如说上图的JustForFun我的编译器就觉得所有的candidate都不对,虽然事实并不是这样。

如果目标符号是函数的话,我还会顺便把参数的类型给写进去,不然看到一堆一样的名字根本不知道哪个是哪个。

9c0dc92605feadc1494fd6ededf289b6.png

5、如果一个名字是一个声明或者定义的话,如果它出现在多个地方,我就会为它生成一个链接。于是你可以从类的向前声明跳到类定义,或者直接看到namespace出现的所有地方等。下图就显示了这个过程,这里Highlight it的意思是这个符号是本文件里的,否则会直接告诉你是什么文件。

86763ceaf62cb3213989149e6d441d75.png

爽!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值