是否有可靠的工具可以删除ASM/C/C++代码中的注释

Is there a reliable tool for removing comments in ASM/C/C++ code?

本文关键字:C++ 注释 代码 删除 工具 是否 ASM      更新时间:2023-10-16

我知道以前有人问过这个问题(例如:请参阅从C/C++代码中删除注释),但我没有找到任何令人满意的结果。

我正在解析一组复杂的C/C++代码,这些代码首先必须进行规范化,其中包括从输入源代码中删除注释。

我尝试过的所有退役工具都在一定程度上失败了,其中包括:

  • 退役
  • stripcmt
  • cloc

注意:我也尝试过"gcc-fpreprocessed-E",但它并没有带来完美的结果;输出中有一些奇怪的宏注释,用于跟踪某些代码行。

为了说明特定工具(cloc)的问题,从该头文件中删除注释也会导致删除非注释,例如该文件开头的所有include。

也就是说,有什么可靠的注释删除工具可以用来去除异常复杂代码中的注释吗?

非常感谢。

#!/bin/bash
if [[ "$#" != 1 ]] ; then
  echo "Usage: stripcomments input-file" > /dev/stderr
  exit
fi
gcc -fpreprocessed -dD -E -P "$1" 2> /dev/null

您可以删除//之后直到EOL的所有内容,如果需要,还可以使用几个regexs删除/**/。。。

对于单行注释,可以使用://(.*)

对于多行注释,这是:/*(.*)*/