對於 C/C++ 開發者而言,每次新建檔案都得手動敲入文件頭、版權聲明、作者資訊,新增函數更要補上詳細的功能描述與修改歷史,這類重複性工作不僅枯燥,還極易遺漏。近日在網上發現由 lushengwen 開發的 quicker.em 宏腳本,堪稱「懶人神器」,能大幅自動化這些流程。不過原版將版權與公司名稱硬編碼在巨集中,切換專案時須修改原始碼,且函數列表無法自動更新,使用上仍有不便。
秉持「有抱怨就有商機」的精神,筆者對原始碼動刀,引入註冊表儲存機制,讓使用者首次執行時透過互動式對話框輸入語言、姓名、公司、版權年份等資訊,後續自動帶入。核心改動在於新增 ConfigureSystem 巨集,利用 ASK 詢問使用者,並以 SetReg/GetReg 讀寫註冊表:
macro ConfigureSystem() {
szLanguage = ASK("Please select language: 0 Chinese ,1 English");
if(szLanguage == "#") SetReg("LANGUAGE", "0") else SetReg("LANGUAGE", szLanguage);
szName = ASK("Please input your name");
if(szName == "#") SetReg("MYNAME", "TigerXiao") else SetReg("MYNAME", szName);
szCompany = ASK("Please input your company");
if(szCompany == "#") SetReg("MYCOMPANY","TigerXiao") else SetReg("MYCOMPANY",szCompany);
szCopyright = ASK("Please input your Copyright ");
if(szCopyright == "#") SetReg("MYCOPYRIGHT","2001-2014") else SetReg("MYCOPYRIGHT",szCopyright);
}
文件頭生成邏輯同步改為讀取這些註冊表鍵值:
szCompany = GetReg("MYCOMPANY");
szCopyright = GetReg("MYCOPYRIGHT");
InsBufLine(hbuf, ln + 2, " 版權所有 (C), @szCopyright@, @szCompany@")
執行 ConfigureSystem 後,依序彈出視窗:
設定完成後,新建檔案並執行文件頭巨集,即可自動生成含動態變數的標準文件頭,且後續修改資訊只需重跑設定巨集,無須動原始碼。
此改版旨在拋磚引玉,期望社群共同完善:如自動同步函數列表、支援 C/C++ 標準庫自動補全等。加強版宏檔已上傳 CSDN:下載連結。歡迎各位下載試用、回饋建議,一起把 SourceInsight 打造成更順手的利器!