2016-02-15 55 views
1

我在編譯g++編譯第三方庫時遇到了一些預處理不幸事件。包括處理的prepocessor指令到`g ++ -E'輸出

我可以在-E的輸出中看到某個封裝爲#ifndef SYMBOL的頭文件正在被繞過。顯然,該符號已被定義在其他地方。 但我看不到在哪裏,因爲處理的指令不存在於-E輸出中。

有沒有一種方法可以包括他們(可能是評論)?

回答

1

我發現的最接近的就是-d<chars>家庭的選擇:

  • -dM轉儲被定義
  • 的所有宏
  • -dD顯示它們的定義位置(轉儲#define指令)
  • -dU示出了在使用它們的(代替#if(n)def,它輸出根據宏是否被定義#define#undef

    添加I任何這些還轉儲#include指令。

缺點是一次只能使用其中一個,它們會抑制正常輸出。

另一個不太容易理解的缺點是-dD-dU不包括預定義的宏。

1

不,沒有標準方法可以將預處理指令作爲註釋。

但是,您可以使用g++ -C -E和行號(以#開頭的行輸出)和註釋(然後將其複製到預處理的表單)。

,您可能還使用-H選項(獲取包含文件)