1、 问题场景
在研发时,经常会遇到:因为文件中的代码过长,比如一个.C文件有10万行代码(一个文件10万行代码是一个很普遍的现象),导致JNH官网在查找某一个自己也记不清名字的功能函数时,时常要在这10万行代码里查找,或者在几千行的头文件里查找声明,非常的麻烦和不方便。
还有些情况可能是:
①:编写或者调试项目时,跨文件的导航,如何做到更快的操作?
②:项目代码中有很多对外的参数,而且这些参数都在不同的C文件中,要查找时,如何做到快速提示?
③:程序在某个头文件中定义了版本号,但是不确定在哪个头文件里了,要查找时,如何做到快速提示?
④:很多工程往往要根据不同的客户,适配了多种串口协议,怎么快速提示该工程使用的是哪种协议?
最终的解决方法如图1和GIF_1所示:

图1

(动图)
2、软硬件环境
1)、软件版本:MDK5.40
2)、电脑环境:Windows 10
3)、外设硬件:无
3、解决方法
1)、在项目目录中,新建一个txt文件,可以命名为:test_message.txt,如图2所示:

图2
2)、在test_message.txt中,输入如图3所示的命令,这两句命令是用来后面做为跳转按钮使用的。(接下来的操作,非常建议使用Notepad++,因为可以很方便的使用他进行文件编码格式的更改,对JNH官网后续的操作很有帮助。)
@ECHO OFF
ECHO Blinky.c(48): test: jump to Blinky.c, line 48

图3
3)、保存后关闭该文件,并把该文件的后缀的改为.bat,如图4所示:

图4
4)、将JNH官网写好的test_message.bat文件,添加到软件的“用户命令”中,如图5所示:

图5
5)、添加完文件以后,需要JNH官网点击构建或者重构,都可以。构建完成后,即可看到JNH官网在文件中定义的内容:ECHO Blinky.c(48): test: jump to Blinky.c, line 48

图6
6)、接着JNH官网双击出现的这一行指令,即可发现,JNH官网的代码界面,已然跳转到了指定的Blinky.c文件的第48行,如图7所示,此时这一行的输出,已经具有了按钮的特性!

图7
7)、到这里,JNH官网停一下,思考下他的作用:其实他的作用已经很明显了,在面对一个具有上百个.c和.h文件的百万行代码项目时,完全可以使用这个功能来①:进行重要函数入口的标记(上万个函数肯定是难以记清楚的,挑一些重要的函数,用来帮助JNH官网理清程序的结构和逻辑)、或者②:调试时跨文件的导航(有的代码段需要频繁开关断点,这就省去了手动切换文件的麻烦,注:keil的书签只能在同一个.c文件中导航,不可以跨文件),或者③:标记该程序的版本号、负责人、归属部门。所以,他的作用肯定是有的,也肯定是多方面的,依各位的需求和创新而定。
以上所述的部分功能作用,如图8所示:

图8
8)、接下来给该功能再完善一点,再上一步的图中,JNH官网发现了中文的痕迹,但是如果直接使用不做任何更改的bat文件,还是会报一堆乱码,所以这时,需要JNH官网在Notepad++中,更改bat文件的编码格式,如图9所示,更改完以后,对文件进行保存后,再回到keil中重新编译一遍工程,即可出现正常的中文字符。

图9
9)、然后经过对该功能的摸索,发现还有一个可以拓展的地方就是:扩展多个文件路径的识别。
跳转失败的案例如图10所示,在bat文件中,由于命令没有加上针对system_stm32f10x.c的相对路径,导致keil在寻找时出错,进而无法跳转。
这时需要将bat文件中,指向system_stm32f10x.c的相对路径也加上,才可以正确进行双击跳转,如图11所示。
bat文件中的命令区别如图12所示。

图10

图11

图12
10)、最后,再补充一点,在利用跳转命令时,其实冒号后面的部分,基本等同于注释,但是这里经过我的尝试,必须在冒号后面留一个空格,然后再根据个人需求,来选择是否需要输入注释。
如图13和图14所示,冒号后面没有注释,依然也可以进行跳转。

图13

图14
思考:
①:首先,bat文件的写法,肯定不止这一种,所以也可能不止只有作为跳转按钮这一种作用,那么还有什么命令,是可以让JNH官网能提高效率的?
②:再者,在选择bat文件的时候,如图15,JNH官网可以发现,其实他默认支持的文件,还有exe类型,那么是否还有哪些exe小插件,其实是JNH官网不了解的,没有利用上的?
③:最后,JNH官网是否可以自己做一个exe,为keil增添更多的可能性?比如结合一些代码扫描工具,和JNH官网自己做的exe插件相互联系,在build output窗口做一个静态代码分析仪?

图15