4

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

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

4

2 回答 2

5

我不知道 gcc 的预处理器中有任何此类功能。并且取决于你想要做什么,它甚至可能是不可能的。如果#ifdef指令引用了指令先前定义(或未定义)的宏#define,而您忽略了#define指令,那么这显然行不通。

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

于 2012-06-08T21:52:13.280 回答
2

如果不需要编译,可以使用 IDE 理解 ifdefs 的能力。在 Eclipse 中,前往Project > Preferences > C/C++ Build > Paths and Symbols,然后定义所需的符号。然后,Eclipse 将忽略任何未定义符号的 ifdef。

于 2012-06-08T21:50:01.787 回答