很多編譯器不支持中文注釋,特別是日系的單片機編譯器,這是一個C語言注釋刪除小工具,輕松編譯
C語言中注釋分為以下幾種
1) /* hello world */2) // hello world
3) #if 0
hello world
#endif
目前C語言中的主流注釋方式為第一種,故暫時只實現(xiàn)了第一種,其實原理都是一樣的。核心原理即為狀態(tài)機,讀入一個字符,根據(jù)當前狀態(tài)和讀入的字符轉(zhuǎn)入下一個狀態(tài),每一個狀態(tài)都有相應的動作處理讀入的字符,如忽略或?qū)懭胼敵鑫募蛲顺錾弦粋字符等等。
共有以下幾個狀態(tài)
#define STATUS_OUTTE 0 /* 在注釋和引號外面 */#define STATUS_DOTTE 1 /* 在引號內(nèi)部 */
#define STATUS_STIN1 2 /* 讀入 /,等待 * */
#define STATUS_STIN2 3 /* 讀入 /* , 準備進入注釋 */
#define STATUS_STINN 4 /* 在注釋內(nèi)部 */
#define STATUS_STOU1 5 /* 讀入 * , 等待 / */
#define STATUS_STOU2 6 /* 讀入 */, 準備離開注釋 */
#define STATUS_STACT 7 /* 偽狀態(tài),表示狀態(tài)機動作 */
狀態(tài)機有以下幾種動作
#define STFLAG_NOACT 0 /* 沒動作,忽略字符 */
#define STFLAG_FPUTC 1 /* 將字符寫入輸出文件 */
#define STFLAG_UNPUT 2 /* 將上一個字符退出 */