[英]CPP - Automatically remove #ifdef's and #ifndef's
我正在使用 Geany IDE 並且我正在嘗試擺脫代碼中的所有#ifdef 和#ifndef 。 出現次數超過 1000 次,它們是嵌套的,無法手動完成。
這是一個例子:
#define EXPLAIN
#ifndef EXPLAIN
...
#endif
...
#ifdef EXPLAIN
...
#else
...
#endif
某處條件是#ifdef某處是#ifndef 。 你明白了......有沒有一種簡單的方法可以用所有相應的代碼來擺脫它們?
如果需要,我將下載並安裝任何其他軟件。
一個好的解決方案是使用僅運行預處理器的-E
標志運行 gcc。 以下命令:
gcc -E -D EXPLAIN file.cpp -o file.i
預處理 file.cpp 並輸出 file.i,這是使用定義的 EXPLAIN 宏預處理的 file.cpp。
如果您想生成一個 output 文件,一些有用的標志通常更具可讀性並且更接近輸入文件的預期外觀:
-D NAME
用定義 1 定義宏NAME
。-fdirectives-only
處理指令而不是宏。-C
保留評論。-P
禁止行標記。 即使使用這些標志, #include
也會被您包含的預處理文件替換。 您可以通過簡單地刪除#include
、預處理輸入文件,然后在 output 文件中添加#include
來解決此問題。
您可以使用unifdef來實現這一點。
unifdef
實用程序選擇性地處理有條件的 C 預處理器#if
和#ifdef
指令。 它從文件中刪除指令和它們分隔的附加文本,否則將保留文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.