簡體   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