很多编译器不支持中文注释,特别是日系的单片机编译器,这是一个C语言注释删除小工具,轻松编译
C语言中注释分为以下几种
1) /* hello world */2) // hello world
3) #if 0
hello world
#endif
目前C语言中的主流注释方式为第一种,故暂时只实现了第一种,其实原理都是一样的。核心原理即为状态机,读入一个字符,根据当前状态和读入的字符转入下一个状态,每一个状态都有相应的动作处理读入的字符,如忽略或写入输出文件或退出上一个字符等等。
共有以下几个状态
#define STATUS_OUTTE 0 /* 在注释和引号外面 */#define STATUS_DOTTE 1 /* 在引号内部 */
#define STATUS_STIN1 2 /* 读入 /,等待 * */
#define STATUS_STIN2 3 /* 读入 /* , 准备进入注释 */
#define STATUS_STINN 4 /* 在注释内部 */
#define STATUS_STOU1 5 /* 读入 * , 等待 / */
#define STATUS_STOU2 6 /* 读入 */, 准备离开注释 */
#define STATUS_STACT 7 /* 伪状态,表示状态机动作 */
状态机有以下几种动作
#define STFLAG_NOACT 0 /* 没动作,忽略字符 */
#define STFLAG_FPUTC 1 /* 将字符写入输出文件 */
#define STFLAG_UNPUT 2 /* 将上一个字符退出 */