c++ - gcc 预处理器 : can I resolve #if[def]s only, 保留其他指令不变?

标签 c++ c gcc

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

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

最佳答案

我不知道 gcc 的预处理器中有任何这样的功能。根据您尝试做的事情,这甚至可能是不可能的。如果 #ifdef 指令引用了先前由 #define 指令定义(或未定义)的宏,而您忽略了 #define 指令,则这显然行不通。

但是unifdef command 很可能就是您要查找的内容。我刚刚使用 sudo apt-get install unifdef 在我的 Ubuntu 系统上安装了它;应该有类似的方法在其他系统上安装它。

关于c++ - gcc 预处理器 : can I resolve #if[def]s only, 保留其他指令不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956393/

相关文章:

c - C 中的未定义行为

GCC:可见性内部 "pretty useless in real world usage"以什么方式?

c - 在 C 中用 %20 替换空格

c - 内存错误,指针数组

gcc - 可以将gcc配置为不在警告/错误消息中打印出完整路径吗?

c - 指向 "undefined"函数的函数指针

c++ - 为什么以下函数不使用 Clang 生成尾递归?

c++ - 如何提示操作系统哪些内存块不应交换到磁盘?

c++ - 使用 ofstream 写入文件时出错

c++ - 如何快速识别头文件中的函数?