Possible Duplicate:
Running the GCC preprocessor
Is there a GCC option to make the GCC preprocessor generate C source code but filter out irrelevant source code?
For example, a C file has #define switch
to define for many different platforms. I'm only intersted in one platform, so I want the C preprocessor to filter out unrelated code. Does GCC support this?
Yes - almost certainly your compiler provides certain default definitions in the environment that you can use to turn code on and off for different systems.
__GNUC__
is a good one for GCC. For example:If you compile that block with GCC,
SOME_VALUE
will be12
, and if you compile with MSVC, for example,SOME_VALUE
will be 14. A list of platform specific definitions is available at this question.You probably can use:
With
switch
the#define
you know will be undefined.It sounds like you actually want unifdef, not the GCC preprocessor.
Use
gcc -E
to only run the preprocessor part, e.g. give a filein.c
running
yields a file
in.i
i.e. the parts behind the
#if 0
got removed. If you would have#include
'd files they would have been pasted too though, so I am not sure how much help this is.