繁体   English   中英

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

[英]gcc preprocessor: can I resolve #if[def]s only, leave other directives untouched?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM