gcc预处理器:我可以解析#if [def] s,保持其他指令不变吗?

Mar*_*son 4 c c++ gcc

我正在对一些由大量#ifs和#ifdefs配置的旧代码进行逆向工程.我目前正在通过在编辑器中进行替换来查看各种配置.这既乏味又(我怀疑)容易出错.

是否有一些gcc预处理器选项可以预处理#if [def]但是保持其他预处理器指令(例如#define)不变?这仅用于逆向工程; 我不需要编译或以其他方式使用预处理代码.

Kei*_*son 5

我不知道gcc的预处理器中有任何这样的功能.根据你想要做的事情,它甚至可能是不可能的.如果#ifdef指令引用先前由#define指令定义(或不​​指定)的宏,并且忽略#define指令,那么这显然不起作用.

但unifdef命令很可能就是你要找的东西.我刚刚将它安装在我的Ubuntu系统上sudo apt-get install unifdef; 应该有类似的方法在其他系统上安装它.