去除C语言注释

问题

想去除C语言里面的所有注释,包括 /**/ 和 // ,网上找的方法一般是正则表达式或者自己写字符串匹配去除,但是那些只能应对简单的情况,对于工程里面很多复杂的C代码,例如遇到printf("/* hello world */")等这种特殊情况往往会出错,所以需要采用一种绝对不会出错的方法

解决方法

我们采用gcc的预处理,编译C代码的第一步是预处理,一般默认是删除注释,宏展开以及把头文件的内容放在代码里。

常用命令是

gcc -E test.c -o test.i

现在我们的目标是只去除注释,采用命令

gcc -fpreprocessed -dD -E test.c

这个命令执行完会把去除注释后的代码输出到屏幕上,可以采用重定向的方式写到文件里

需要注意的是去除注释后的内容有一点瑕疵,里面会多出来一些类似于

# 数字 "test.c"

所以第二步就是把这些多出来的字符串去掉

这些字符串的特征就是# 开头,第二列是数字,第三列是引号包括的文件名,删除掉就得到了纯代码文本

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值