2011-05-05 193 views
4

有時我運行相當複雜的宏,我想查看它們將擴展到給定參數(也有字符串連接)。有沒有機會在那裏擴展宏?C++宏擴展器

我知道的編譯器標誌-E但對於單個文件的

回答

2

C和C++預處理程序被稱爲在大多數系統CPP - 你可以直接使用它(或最好是單個宏?):

cpp somefile.c 

將預處理somefile.c,擴展宏並將結果寫入標準輸出。如果您使用Microsoft編譯器:

cl -E somefile.c 

將執行相同的操作,假設您的PATH上有編譯器。

+0

你的意思是說,我可以從命令提示符下調用此? – Samaursa 2011-05-05 15:47:57

+0

當然 - 它有效地完成了gcc -E的工作,但如果這不滿足您的需求,cpp。 – 2011-05-05 15:51:41

+0

好吧,我想我並不完全理解這裏的解決方案。如果我在命令提示符下鍵入'cpp myfile.h',它會說'cpp不是一個可識別的命令'。 – Samaursa 2011-05-05 16:02:07

1

Netbeans IDE允許您通過按住Ctrl + Alt並懸停/單擊一個宏來查看宏展開的內容。

3

有幾個選項:
在GCC:

GCC-E FILENAME.C

使用電腦預編譯:

cpp filename.c 

在Visual Studio中:
右鍵單擊解決方案資源管理器上的文件,轉到屬性。在配置屬性 - > C/C++ - >預處理器&「生成預處理文件」

+0

使用Visual Studio的方法存在的問題是它適用於整個項目,這會使事情變得相當緩慢 – Samaursa 2011-05-05 15:47:27

+0

@Samaursa:第二個選項最適合您。是的,你可以從命令行運行它。我相信它在默認情況下已經存在於PATH中,因此您可以從cmd行運行它。 – 2011-05-05 15:51:42

+0

奇怪的是,它不適合我。但我認爲我的設置有問題,因爲我最近安裝了TortoiseHg,當我在命令提示符下鍵入'hg'時,它給了我一個錯誤,說不能識別命令 – Samaursa 2011-05-05 16:04:29

4

如果將鼠標懸停在其上,Eclipse將展開宏。對於包含其他宏的宏,Eclipse甚至可以一步一步地完成宏擴展。

(您可以使用Eclipse這個即使您通常使用其他IDE)。