Remover comentários em um arquivo C

Remover comentários em um arquivo C

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 conseguir

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

Eu tentei usar

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

para remover qualquer texto entre /* e */ correspondentes, mas está eliminando os símbolos de comentário, mas não o texto intermediário. Qual é a maneira correta? Se houver outra maneira de usar 'sed', seria bom saber disso também.

Responder1

Você pode fazer isso com umCompilador C::

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

verificarman gcc

Responder2

Se você deseja apenas remover qualquer coisa entre /*e */e ignorar todas as peculiaridades da linguagem C, como //comentários no estilo C99, strings entre aspas e escapes de barra invertida de novas linhas, então um simples Perl-regex deve servir:

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

informação relacionada