Remover comentários em um arquivo C [duplicado]

1

Estou tentando remover comentários de um arquivo que pode estar em qualquer parte de uma linha e abranger várias linhas.

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

Eu preciso pegar

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

Eu tentei usar

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

para remover qualquer texto entre correspondentes / * e * /, mas elimina os símbolos de comentários, mas não o texto entre eles. Qual é o caminho correto? Se existe outra maneira de usar 'sed', seria bom saber disso também.

    
por kris 20.10.2016 / 22:54

2 respostas

0

Se você quiser apenas remover qualquer coisa entre /* e */ e ignorar todas as peculiaridades da linguagem C, como C99-style // -comments, strings entre aspas e escapes com contrabarra de novas linhas, então um Perl-regex simples deve fazer:

perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile
    
por 20.10.2016 / 23:27
3

Você pode fazer isso com um compilador C : :

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

verifique man gcc

    
por 20.10.2016 / 23:11