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