我在編譯g++
編譯第三方庫時遇到了一些預處理不幸事件。包括處理的prepocessor指令到`g ++ -E'輸出
我可以在-E
的輸出中看到某個封裝爲#ifndef SYMBOL
的頭文件正在被繞過。顯然,該符號已被定義在其他地方。 但我看不到在哪裏,因爲處理的指令不存在於-E
輸出中。
有沒有一種方法可以包括他們(可能是評論)?
我在編譯g++
編譯第三方庫時遇到了一些預處理不幸事件。包括處理的prepocessor指令到`g ++ -E'輸出
我可以在-E
的輸出中看到某個封裝爲#ifndef SYMBOL
的頭文件正在被繞過。顯然,該符號已被定義在其他地方。 但我看不到在哪裏,因爲處理的指令不存在於-E
輸出中。
有沒有一種方法可以包括他們(可能是評論)?
我發現的最接近的就是-d<chars>
家庭的選擇:
-dM
轉儲被定義-dD
顯示它們的定義位置(轉儲#define
指令)-dU
示出了在使用它們的(代替#if(n)def
,它輸出根據宏是否被定義#define
或#undef
)
添加I
任何這些還轉儲#include
指令。
缺點是一次只能使用其中一個,它們會抑制正常輸出。
另一個不太容易理解的缺點是-dD
和-dU
不包括預定義的宏。
不,沒有標準方法可以將預處理指令作爲註釋。
但是,您可以使用g++ -C -E
和行號(以#
開頭的行輸出)和註釋(然後將其複製到預處理的表單)。
,您可能還使用-H
選項(獲取包含文件)