工作后不久,就听组长说鱼鹰的前任同事使用SourceInsight编写代码,而使用KEIL编译。鱼鹰无法理解,为什么KEIL明明可以编辑代码,为什么还要另一个工具软件呢?

直到初步尝试后才发现看代码确实挺方便的,但这点好处说实话很多工具都具备,还不足以让鱼鹰专门为它写一章(前段时间鱼鹰写了一篇《介绍几款好用的工具 | 嵌入式必备》,其中就介绍了它),直到最近,鱼鹰才发现了这个软件的强大之处,所以鱼鹰才忍不住想写一写,分享给各位道友,而最近又有几个也忍不住想写的点:

《还是没忍住,聊聊无锁队列吧》

《KEIL 下如何准确测量代码执行时间?》

记得关注鱼鹰哦!

现在继续说回SI吧,这个网上评价很高,如果要问哪一款软件的代码编辑最强大,这个众说纷纭,但是要问哪款软件看代码最爽,无疑是SI了。

那么凭什么?

现在鱼鹰就说说使用这款软件的三大理由:

创建工程简单至极!

我们知道,当我们使用KEIL的时候,如果想看代码,只能用KEIL打开工程,才能找到你想要的代码。同理,IAR亦是如此。

有一天,常用KEIL的你,为了一个功能,从网上下载了一份参考代码,但是不好意思,这个参考代码是使用 IAR 建立的工程。为了看这份代码,查看函数之间的调用关系,变量声明的位置,你不得不安装一个IAR,然后编译(可能还需要PJ才能正常使用),当你折腾完之后,你研究代码的兴趣应该耗完了吧!

那么是否有简单的方法,跳过IAR,直接看源码呢?有的,那就是SI。

这篇笔记不是基础教程,就不教你如何新建一个SI工程了,不然篇幅太长,重点就没了。

总之,使用SI查看代码只需要两步,第一,新建工程,第二,同步,这个同步会将函数调用等信息都检索出来,方便查看代码,就像KEIL的这个功能:

而且同步速度也是很快的。

特别注意的一点就是,每次修改完代码之后如果要查看代码都得同步一下(可能有自动同步功能,但目前鱼鹰没用),否则有些代码信息可能不能及时反映,还有新建工程时不要有中文路径,切记!

对了,KEIL和SI是可以同时打开同一个工程的,如果你有双屏(这个程序员必备吧,哈哈),那感觉很爽!

只是刚开始使用SI时,因为字体大小不一,可能会不太习惯,但是看着看着就习惯了。如果实在不习惯,这个也是可以设置的,具体上网搜就是了。

这个优势在鱼鹰的一篇笔记中介绍过了,就是在查看函数定义的时候特别方便。鱼鹰现在用上次的参考代码直接新建一个SI工程看看效果好了。

可看到当你的光标指向一个函数时,有一个窗口自动就会把这个函数的实现展示出来,这样就不需要像KEIL一样按F12才能跳转查看了,特别方便。

还有一个功能,你可以使用高亮功能使某一个函数名或变量名高亮:

当你光标选中一个名词,右击即可出现一个菜单栏,选择Highligth Word选项,这个也有一个快捷键,也可以重新设置快捷键,随你喜好了(这个功能是对整个工程代码而言的)。

这个功能有个替代功能,就是直接选择一个名词后,它会自动把本文件相同的名词进行高亮,就不需要自己手动设置高亮了。

怎么设置呢?选择【File Type Options…】然后再弹出菜单进行选择即可。

最重要的一点来了,也是为啥选择SI查看代码最重要的理由。

使用KEIL时,如果我们需要查看一个函数在哪里被调用了,常规做法就是全工程进行搜索,但是有时候刚好你搜索的函数名在工程有很多地方是有同名的,那么你不得不停下来判断你找到的函数是不是你需要的,这样一来,不仅可能出现人为判断错误,还严重影响了工作效率,特别是当你需要在这个函数的前后加入一些代码时,更是让人修改起来头大。

如果有一个代码查看工具,可以把所有的函数、结构体成员、变量调用情况都清晰的展示出来,那该多好!

有的,就是SI。

现在看看如何查看size这个结构体成员变量的调用情况的?

看到没有,右边窗口把所有关于size调用的地方都显示出来了,因为它是实时根据光标内容更新的,所以为了防止查看其它代码的时候被更新了,可以通过锁定开关达到锁定的效果,如果你突然想看别的成员变量,那么重新使用旁边的刷新按钮即可刷新啦,简单方便。

到此重点结束,现在说说关于SI的其他点。

我们看代码时可以看到有些代码颜色各异,但都是彩色的,这是因为SI已经能够识别这些代码,但有些SI识别不了的,可能就黑色了(这种情况下无法查看调用)。

比如鱼鹰增加一个返回指针的函数指针,可以看到这个变量是黑色的,说明SI无法识别这个变量。

但是你用typedef重新声明后再加入到结构体里就能识别了,看,它变色了!

而当函数参数不一样,而函数名一样时,它会很智能的选择正确的那一个函数

这种智能有时也会带来一点麻烦,比如你要修改一个现有函数,本来一个参数的,修改成两个参数,有的时候修改了一半,有些函数改了,有些函数没改,那么当你查看有两个参数的函数的调用情况时,就会发现你全部都修改了,但实际情况是还有一半没有修改过来呢!

所以这个特性需要引起注意。

好了,更多关于SI的使用方法就自己去发现吧,总之用了它你绝不会后悔就是了,鱼鹰也特别希望各位道友能用上这款神器。

sourceinsight无法跳转函数_使用SourceInsight的三大理由,最后一点是关键!相关推荐

  1. python unique函数_《Python编程从入门到实践》json数据可视化练习详解

    <Python编程从入门到实践>16.2中,计算收盘价均值的程序有些不易看懂,结合我自己的理解进行一些说明. 使用的数据集:join格式的数据, 数据集是由多个字典为元素组成的列表.每个字 ...

  2. django-url的分发, 2)起别名, 3)根目录,4)rediect跳转函数:

    1)url的分发: 1,首先在全局的url里面的路径中写好,你要分发的路径名.2,并且在你要分发的路径下,创好新的url文件. 在分发的路径名里面,把全局url里面的代码,复制过来3,最后在浏览器打开 ...

  3. PurgeComm()函数_清空缓冲区 收藏

    PurgeComm()函数_清空缓冲区 收藏  该函数原型: BOOL PurgeComm(HANDLE hFile,DWORD dwFlags ) HANDLE hFile //串口句柄       ...

  4. linux uname内核,Linux下confstr与uname函数_获取C库与内核信息

    Linux下confstr与uname函数_获取C库与内核信息 #include #include  //uname int main(int argc, char **argv[]) { struc ...

  5. c语言程序 中断函数示例,单片机_C语言函数_中断函数(中断服务程序)

    c语言中的中断函数注意事项 单片机_C语言函数_中断函数(中断服务程序) 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统. 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该 ...

  6. VScode无法跳转函数/no definition found for xxx

    系统:windows 10 问题:本来根据教程配好了的,一直都能正常跳转,结果今天突然就无法跳转函数了,Ctrl+左键和F12全部失效 尝试过的解决方案:1.安装删除C\C++ 1.5.1,C++ I ...

  7. 【九】Python全栈之路--文件函数_函数参数

    文章目录 1. 文件相关函数 2. 函数_函数的参数 2.1 函数 2.2 函数的参数 3. 收集参数 4. 命名关键字_总结 4. 小练习 1. 文件相关函数 # ### 刷新缓冲区 "& ...

  8. subtotal函数_星期五的Excel函数:将总计为SUBTOTAL的筛选列表

    subtotal函数 The Excel SUM function does a great job of adding numbers on a worksheet, and it's probab ...

  9. python中的goto函数_如何在 Python 中实现 goto 语句

    Python 默认是没有 goto 语句的,但是有一个第三方库支持在 Python 里面实现类似于 比如在下面这个例子里, from goto import with_goto @with_goto ...

最新文章

  1. 编写自己的Shell解释器-3[转]
  2. TortoiseSVN新人使用指南
  3. centos7安装uwsgi报错_如何将CentOS 7升级到CentOS 8
  4. 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
  5. 发现一个木马,竟然偷传我珍藏几十G的视频!
  6. 通过IHttpHandler实现图片验证码
  7. 利用Zabbix ODBC monitoring监控MySQL
  8. ​《麻省理工科技评论》选出2019年全球十大突破性技术
  9. (三)比特币时间序列数据的AI异常检测
  10. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区
  11. “The Stupidity Paradox”作者访谈
  12. 从此,我就踏入IT行业拉
  13. python爬虫JS逆向之人口流动态势大数据
  14. python装饰器-简易版
  15. 跨浏览器(IE/FF/OPERA)JS代码小结
  16. unity中连接MySQL数据库的方法封装
  17. 【C语言】排序详解——冒泡排序
  18. 转载:机器人工程师学习计划(YY硕)
  19. SSM项目之短信验证码登录
  20. 2021.11.17 关于一元二次方程组求根

热门文章

  1. 模型压缩的开源项目工具
  2. MySQL手动安装Linux教程
  3. (最简单)小米MIX 2S的usb调试模式在哪里开启的流程
  4. 如何在CentOS 7上安装Apache
  5. Scala变量和常量
  6. java多态性补充-instanceof关键字
  7. Python_note5 函数和代码复用+PyInstaller库+数码管绘制
  8. 文本挖掘预处理之向量化与Hash Trick
  9. 使用Scala-IDE构建Maven项目
  10. messageSource can't replace {0} by params