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

C99 스타일 주석, 인용 문자열, 개행 문자의 백슬래시 이스케이프 등 C 언어의 모든 단점을 무시하고 /*사이에 있는 항목을 제거하려면 간단한 Perl-regex를 사용하면 됩니다.*///

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

관련 정보