leco leco - 1 year ago 79
C Question

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

I know this question has been asked before (e.g.: see Remove comments from C/C++ code), but I haven't found any satisfiable result.

I am parsing a set of complex C/C++ code that first must be normalized, which includes eliminating comments from the input source code.

All decommenting tools I have tried failed to a certain degree, and that includes:

  • decomment

  • stripcmt

  • cloc

Note: I have also tried "gcc -fpreprocessed -E", but it does not lead to a perfect result; the output has some weird macro annotations for keeping tack of certain lines of code.

To illustrate the problem with a particular tool (cloc), removing comments from this header file leads to removing non-comments as well, such as all the includes in the begining of that file.

That said, is there any reliable tool for comment removal that can be used in stripping out comments in exceptionally complex code?

Much appreciated.

Answer Source

if [[ "$#" != 1 ]] ; then
  echo "Usage: stripcomments input-file" > /dev/stderr

gcc -fpreprocessed -dD -E -P "$1" 2> /dev/null
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download