2011-04-28 21 views
2

此問題:Is there a way to tell whether code is now being compiled as part of a PCH?讓我思考這個問題。C/C++編譯器列出了定義的內容

有沒有辦法,或許只有某些編譯器,讓C/C++編譯器轉儲出它當前使用的定義?

編輯:我知道這在技術上是一個預處理器的問題,但讓我們在術語編譯器中添加。

+0

挑剔:這是一個預處理器功能。 – delnan 2011-04-28 22:47:12

+0

如何看到預處理器的輸出不符合你想要做的事情? – kirakun 2011-04-28 22:55:51

+0

因爲現在大多數編程人員都在其中包含預處理器。我多年沒有完成C++,但我不記得曾經手動運行預處理器。 – 2011-04-29 23:47:30

回答

1

是的。在海灣合作委員會

g++ -E -dM <file> 

我敢打賭,它可能在幾乎所有的編譯器。

+0

我還沒有偶然發現任何編譯器的功能。我印象深刻的是'gcc'有。 – wallyk 2011-04-28 23:18:47

1

Boost Wave(恰好包含命令行驅動程序的預處理器庫)包含一個tracing capability以跟蹤宏擴展。它可能比你所要求的要多一點 - 它不僅僅顯示最終結果,而且實質上是擴展宏的每一步(甚至是非常複雜的一步)。

clang preprocessor有點類似。它基本上也是一個包含命令行驅動程序的庫。預處理器定義了這種類型的macro_iterator類型和macro_begin/macro_end,這將使您能夠使用預處理器符號表並執行幾乎任何您想要的操作(包括打印符號,當然)。