删除 C 文件中的注释

删除 C 文件中的注释

我正在尝试从文件中删除注释,该注释可能位于一行的任何部分并且跨越多行。

 struct my_struct{
  field1;
  field2; /** comment 1
  */ field3;
  /* comment 2 */
 } struct_name;

我需要得到

struct my_struct{
  field1;
  field2; 
  field3;
 } struct_name;

我尝试使用

grep -o '[^/*]*[^*/]' 

删除匹配 /* 和 */ 之间的任何文本,但它会删除注释符号,但不会删除之间的文本。正确的方法是什么?如果还有另一种使用“sed”的方法,那么也很高兴知道这一点。

答案1

你可以用C编译器

gcc -fpreprocessed -dD -E -P file.c

查看man gcc

答案2

如果您只想删除/*和之间的任何内容*/,并忽略 C 语言的所有怪癖,例如 C99 风格的//注释、带引号的字符串和换行符的反斜杠转义,那么一个简单的 Perl-regex 应该可以做到:

perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile

相关内容