去除C语言注释

问题

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

解决方法

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

常用命令是

gcc -E test.c -o test.i

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

gcc -fpreprocessed -dD -E test.c

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

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

# 数字 "test.c"

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

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

猜你喜欢

转载自blog.csdn.net/wh_computers/article/details/105216296
今日推荐