問題
在創建完成 Source Insight 工程後,我們就可以使用絕大部分功能。但是如果用的多了就會發現,其與我們真正的 IDE(通常我們僅用 Source Insight 編輯代碼,實際的編譯、調試還得上 IDE ) 總有些不適應的地方!具體有如下問題:
- Source Insight 無法處理編譯器使用的庫文件。例如,Source Insight 將找不到一些庫函數的定義,例如:
memcpy
函數 - Source Insight 無法處理自己代碼中使用的各種宏值。在實際開發中,我們經常有一些全局的宏,如下圖:
或者說有一些編譯器自己定義的宏值,如下是一個處理多編譯器的文件:
/* define compiler specific symbols */
#if defined (__ICCARM__)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#define PACK_STRUCT_USE_INCLUDES
#define __ASM __asm /*!< asm keyword for iarcc */
#define __INLINE inline /*!< inline keyword for iarcc. Only avaiable in High optimization mode! */
#define __nop __no_operation /*!< no operation intrinsic in iarcc */
#elif defined (__CC_ARM)
#define PACK_STRUCT_BEGIN __packed
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#define __ASM __asm /*!< asm keyword for armcc */
#define __INLINE __inline /*!< inline keyword for armcc */
#ifndef __ARMCC_VERSION
#error Unsupport ARM toolchain
#elif __ARMCC_VERSION > 400000 /* ADS中,此值爲1;RVCT(armcc 4.x) 格式:PVbbbb,且P=4;armcc5.x 格式:PVVbbbb,且P=5 */
#pragma anon_unions /* armcc 默認沒有開啓對 匿名結構體等的支持 */
#else /* armcc 4.x 以下 不支持 變長數組等C99特性*/
#define NO_FLEXIBLE_ARRAY
#endif
#elif defined (__GNUC__)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT __attribute__ ((__packed__))
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#define __ASM asm /*!< asm keyword for gcc */
#define __INLINE inline /*!< inline keyword for gcc*/
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#define PACK_STRUCT_USE_INCLUDES
#else
#error Unknown compiler
#endif
- Source Insight 默認的快捷鍵與很多 IDE 默認的快捷鍵不一致。例如:代碼註釋
CTRL + /
、代碼導航ALT + Left
等 - Source Insight 沒有代碼格式化工具
- 根據需要自己修改菜單項
Source Insight 僅僅是個代碼查看、編輯器,但是我們可以配置其支持更多功能!
添加庫文件
正確引入編譯器使用的庫文件,可以使 Source Insight 更好的實現對源碼的支持!要使 Source Insight 可以支持編譯器(IDE)中使用的庫文件,我們可以通過如下步驟來實現:
- Source Insight 本身支持導入外部符號。可以選擇僅爲當前項目添加外部符號,否則默認對全部 Source Insight 項目起作用!
- 如下圖所示,根據需要添加即可
添加宏
對於我們自己在項目中添加的宏,通常是限制了某些功能。編譯器預定義的宏值則決定了編譯條件過程。要使 Source Insight 正確識別由宏值控制的內容,則可以通過以下步驟添加:
- 從項目配置中打開
- 根據自己的定義,添加各宏值即可!
快捷鍵
這個的修改就是看自己需要了。如果經常使用其他 IDE 或者編輯環境,對於一些快捷鍵可能有自己的執著。例如,在目前很多現代化的編輯環境中,代碼的註釋常用快捷鍵 Ctrl + /
。Source Insight 本身支持修改其默認的快捷鍵。修改方式如下:
- 在如下圖所示的菜單下,有快捷鍵配置這一項
- 根據需要修改即可。
注意:- 有些快捷鍵是被系統等佔用的,不能修改!
- 在修改快捷鍵時,會提示快捷鍵衝突,這是因爲要修改的快捷鍵已經被用在了 Source Insight 的其他功能上。需要用戶自己確認是否更改,更改後原來功能的快捷鍵將被置爲空。
菜單編輯
菜單編輯主要是修改 Source Insight 默認的菜單!如果你覺得 Source Insight 默認菜單不符合你的使用習慣,則可以進行更改,Source Insight 本身持續修改默認的菜單。一般採用默認菜單項目即可!修改方式如下:
- 從如下圖所示的菜單中,打開菜單編輯界面
- 在如下圖所示的菜單編輯頁面中,我們可以選擇要編輯的菜單。不過僅支持刪除、增加、排序 Source Insight 默認菜單中的菜單項。 不能刪除整個菜單(如直接刪除 Tools 菜單是不允許的)。
其中,需要特殊注意的就是,Source Insight 可以在菜單欄手動填一個名爲Work
的菜單。這個菜單下通常存放一些我們自定義的菜單項。關於這一個菜單的使用,可以參見博文SourceInsight 4.0 之 常用宏使用、編輯、修改詳解(附最新完善版本的宏)。
配置外部工具
對於 Source Insight 不具備的功能,我們可以通過引入外部工具來實現,以增強 Source Insight 的功能。在 Source Insight 中,這些外部工具所實現的功能被稱爲 自定義命令。通過這個配置,我們可以配置一些常用的命令行工具,直接在 Source Insight 中使用!例如,配置 AStyle 代碼格式化工具。修改方式如下:
- 通過如下圖所示的菜單,打開修改界面
- 在如下圖所示的自定義命令編輯界面,來添加我們需要的外部工具的支持
上圖界面的左側是 Source Insight 配置的命令的列表,上圖所示這些是 Source Insight 的默認的一些命令工具項。只是其對應的右側詳細配置中沒有實際工具路徑,需要用戶自己來配置。
每個自定義命令的右側的配置詳情格式都是由 Source Insight 預定義好的,且所有外部自定義命令都是如上圖所示的這個樣子,用戶不能改變!我們只能在上面填寫內容,及選擇 Source Insight 提供的功能選項!
對於上圖的默認自定義命令項,有些是可以刪除的,有些則不可以刪除!此外,我們可以通過左上角的Add...
按鈕來增加自己的外部工具,以實現自己需要的命令。
Source Insight 宏
Source Insight 除了可以通過上面的自定義外部工具來擴展其功能外,其還定義了一套自己的宏語言(類似於 C 語言),用戶可以通過自己編程來改變 Source Insight 的一些默認的行爲!
關於Source Insight 宏的編寫及使用問題,可以參見博文SourceInsight 4.0 之 常用宏使用、編輯、修改詳解(附最新完善版本的宏)。其中,介紹的很詳細!
注意事項
- 添加了自己的宏後,高亮顏色顯示時不對的,如下:
但是,Source Insight 是認爲該宏已經被定義的!沒有定義的宏值,代碼被高亮爲 灰色!