2013-04-12 89 views
6

我想「武裝」編譯一個C文件,它包括很多頭文件遞歸..我試圖找到這些頭文件的列表..我有一個更簡單的方法來找到它包含的所有頭文件的列表?C文件包含的所有頭文件的列表

+0

是的,看看.C文件。或者,您也可以使用-E編譯器選項來查看主標頭。 – Shark

+0

以下是GCC提示:http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+1

for Visual Studio http://msdn.microsoft.com/en-us/library/hdkef6tk% 28v = vs.90%29.aspx – 2013-04-12 16:23:16

回答

10

您可以使用GCC C預處理器與它的選項轉儲遞歸包括標題列表:

cpp -M 

會告訴你所有的標題包括在內。

您可能需要給它定期構建中使用的所有包含目錄的根目錄。迭代運行它,添加更多包含路徑,直到錯誤停止。

在此使用這個命令的完整形式是:

cpp -M [-I include_directory *] path_to_c_file.c 
+0

這適用於哪個工具鏈呢? –

+0

這適用於gcc – piokuc

+0

啊,thx!我熟悉'gcc -M'或'g ++ -M'命令,這個特殊選項對我來說是新的。它是否跟蹤遞歸包含的文件?忘了這個,我知道它是獨立的預處理器... –

0

大多數編譯器有開關,使他們只是預處理的文件。除此之外,他們將所有的#include都擴展爲實際的代碼。通常他們會在原始包含的行中包含評論(正確的C評論)。因此,您可以搜索所有此類評論的結果預處理代碼以收集所有包含的標題。

+2

它通常不是註釋,而是'#line'指令。 –

+1

而且:交換機通常是'-E'(或'/ E')。 –