c++ccomments

Remove comments from C/C++ code


Is there an easy way to remove comments from a C/C++ source file without doing any preprocessing. (ie, I think you can use gcc -E but this will expand macros.) I just want the source code with comments stripped, nothing else should be changed.

EDIT:

Preference towards an existing tool. I don't want to have to write this myself with regexes, I foresee too many surprises in the code.


Solution

  • Run the following command on your source file:

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

    Thanks to KennyTM for finding the right flags. Here’s the result for completeness:

    test.c:

    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo
    /* comments? comments. */
    // c++ style comments
    

    gcc -fpreprocessed -dD -E -P test.c:

    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo