1、 問題場景
在研發(fā)時,經(jīng)常會遇到:因為文件中的代碼過長,比如一個.C文件有10萬行代碼(一個文件10萬行代碼是一個很普遍的現(xiàn)象),導(dǎo)致我們在查找某一個自己也記不清名字的功能函數(shù)時,時常要在這10萬行代碼里查找,或者在幾千行的頭文件里查找聲明,非常的麻煩和不方便。
還有些情況可能是:
①:編寫或者調(diào)試項目時,跨文件的導(dǎo)航,如何做到更快的操作?
②:項目代碼中有很多對外的參數(shù),而且這些參數(shù)都在不同的C文件中,要查找時,如何做到快速提示?
③:程序在某個頭文件中定義了版本號,但是不確定在哪個頭文件里了,要查找時,如何做到快速提示?
④:很多工程往往要根據(jù)不同的客戶,適配了多種串口協(xié)議,怎么快速提示該工程使用的是哪種協(xié)議?
最終的解決方法如圖1和GIF_1所示:

圖1

(動圖)
2、軟硬件環(huán)境
1)、軟件版本:MDK5.40
2)、電腦環(huán)境:Windows 10
3)、外設(shè)硬件:無
3、解決方法
1)、在項目目錄中,新建一個txt文件,可以命名為:test_message.txt,如圖2所示:

圖2
2)、在test_message.txt中,輸入如圖3所示的命令,這兩句命令是用來后面做為跳轉(zhuǎn)按鈕使用的。(接下來的操作,非常建議使用Notepad++,因為可以很方便的使用他進行文件編碼格式的更改,對我們后續(xù)的操作很有幫助。)
@ECHO OFF
ECHO Blinky.c(48): test: jump to Blinky.c, line 48

圖3
3)、保存后關(guān)閉該文件,并把該文件的后綴的改為.bat,如圖4所示:

圖4
4)、將我們寫好的test_message.bat文件,添加到軟件的“用戶命令”中,如圖5所示:

圖5
5)、添加完文件以后,需要我們點擊構(gòu)建或者重構(gòu),都可以。構(gòu)建完成后,即可看到我們在文件中定義的內(nèi)容:ECHO Blinky.c(48): test: jump to Blinky.c, line 48

圖6
6)、接著我們雙擊出現(xiàn)的這一行指令,即可發(fā)現(xiàn),我們的代碼界面,已然跳轉(zhuǎn)到了指定的Blinky.c文件的第48行,如圖7所示,此時這一行的輸出,已經(jīng)具有了按鈕的特性!

圖7
7)、到這里,我們停一下,思考下他的作用:其實他的作用已經(jīng)很明顯了,在面對一個具有上百個.c和.h文件的百萬行代碼項目時,完全可以使用這個功能來①:進行重要函數(shù)入口的標記(上萬個函數(shù)肯定是難以記清楚的,挑一些重要的函數(shù),用來幫助我們理清程序的結(jié)構(gòu)和邏輯)、或者②:調(diào)試時跨文件的導(dǎo)航(有的代碼段需要頻繁開關(guān)斷點,這就省去了手動切換文件的麻煩,注:keil的書簽只能在同一個.c文件中導(dǎo)航,不可以跨文件),或者③:標記該程序的版本號、負責人、歸屬部門。所以,他的作用肯定是有的,也肯定是多方面的,依各位的需求和創(chuàng)新而定。
以上所述的部分功能作用,如圖8所示:

圖8
8)、接下來給該功能再完善一點,再上一步的圖中,我們發(fā)現(xiàn)了中文的痕跡,但是如果直接使用不做任何更改的bat文件,還是會報一堆亂碼,所以這時,需要我們在Notepad++中,更改bat文件的編碼格式,如圖9所示,更改完以后,對文件進行保存后,再回到keil中重新編譯一遍工程,即可出現(xiàn)正常的中文字符。

圖9
9)、然后經(jīng)過對該功能的摸索,發(fā)現(xiàn)還有一個可以拓展的地方就是:擴展多個文件路徑的識別。
跳轉(zhuǎn)失敗的案例如圖10所示,在bat文件中,由于命令沒有加上針對system_stm32f10x.c的相對路徑,導(dǎo)致keil在尋找時出錯,進而無法跳轉(zhuǎn)。
這時需要將bat文件中,指向system_stm32f10x.c的相對路徑也加上,才可以正確進行雙擊跳轉(zhuǎn),如圖11所示。
bat文件中的命令區(qū)別如圖12所示。

圖10

圖11

圖12
10)、最后,再補充一點,在利用跳轉(zhuǎn)命令時,其實冒號后面的部分,基本等同于注釋,但是這里經(jīng)過我的嘗試,必須在冒號后面留一個空格,然后再根據(jù)個人需求,來選擇是否需要輸入注釋。
如圖13和圖14所示,冒號后面沒有注釋,依然也可以進行跳轉(zhuǎn)。

圖13

圖14
思考:
①:首先,bat文件的寫法,肯定不止這一種,所以也可能不止只有作為跳轉(zhuǎn)按鈕這一種作用,那么還有什么命令,是可以讓我們能提高效率的?
②:再者,在選擇bat文件的時候,如圖15,我們可以發(fā)現(xiàn),其實他默認支持的文件,還有exe類型,那么是否還有哪些exe小插件,其實是我們不了解的,沒有利用上的?
③:最后,我們是否可以自己做一個exe,為keil增添更多的可能性?比如結(jié)合一些代碼掃描工具,和我們自己做的exe插件相互聯(lián)系,在build output窗口做一個靜態(tài)代碼分析儀?

圖15