刪除 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

相關內容