开发者

How do I run the GCC preprocessor to get the code after macros like #define are expanded?

开发者 https://www.devze.com 2023-01-20 04:05 出处:网络
Is there an option that the GCC preprocessor could generate C source code and filter out irrelevant source code?

Is there an option that the GCC preprocessor could generate C source code and filter out irrelevant source code?

For example, a .c file has a #define swi开发者_运维百科tch to define for many different platforms. I'm only interested in one platform, and I want the C preprocessor to filter out unrelated code.

Does GCC support this?


Yes. Use the -E option:

gcc -E foo.c


While the -E option will perform all pre-processing, it also produces some very 'raw' output that might not be what you want (depending on what you want).

If you need to debug a macro expansion that's not doing what you expect, E is a good way to go. If you simply want to filter out the 'inactive code', but leave the remaining code in more-or-less original form, you might want to look at the answers to the following Stack Overflow question:

  • Is there a C pre-processor which eliminates #ifdef blocks based on values defined/undefined?


It sounds like you want unifdef, not the GCC preprocessor.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号