簡體   English   中英

CPP - 自動刪除 #ifdef 和 #ifndef

[英]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來解決此問題。

來源:使用 GNU 編譯器集合 (GCC):預處理器選項

您可以使用unifdef來實現這一點。

unifdef實用程序選擇性地處理有條件的 C 預處理器#if#ifdef指令。 它從文件中刪除指令和它們分隔的附加文本,否則將保留文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM