Run a “light” preprocessor for GCC

前端 未结 5 809
误落风尘
误落风尘 2021-02-07 10:37

Is there a way to run the GCC preprocessor, but only for user-defined macros?

I have a few one-liners and some #ifdef, etc. conditionals, and I want to see

5条回答
  •  天涯浪人
    2021-02-07 11:23

    Call cpp directly, e.g.

    $ cat >foo.c <"
    # 1 ""
    # 1 "foo.c"
    
    
    foo is defined
    

    Of course, if you include any headers then those will be included in the output. One way to avoid that might be to just grep -v out the lines with #includes (or perhaps just ones with #include < and allow #include "). Or you could specify the -nostdinc option to remove just standard includes (but possibly leave in local libraries unless you specify include paths so that they won't be found) - this would warn about missing headers, though.

    Edit: Or use the preprocessor itself to make the inclusion of headers conditional, wrap them in something like #ifndef TESTING_PREPROCESSOR and use -DTESTING_PREPROCESSOR.

提交回复
热议问题