2013-04-12 11 views
6

Próbuję "uzbroić" skompilować plik C, zawiera on wiele plików nagłówkowych rekursywnie..i próbuję znaleźć listę tych plików nagłówkowych ..jest tam łatwiejszy sposób znaleźć listę wszystkich plików nagłówkowych, które zawiera?lista wszystkich plików nagłówkowych zawartych w pliku C

+0

Tak, spójrz na plik .C. Lub alternatywnie, możesz zerknąć na nagłówek główny, używając opcji -E kompilatora. – Shark

+0

Oto wskazówka dla GCC: http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+1

dla Visual Studio http://msdn.microsoft.com/en-us/library/hdkef6tk% 28v = vs.90% 29.aspx –

Odpowiedz

10

Można użyć GCC preprocesora C z jego rozwiązaniem, aby zrzucić listę nagłówków rekurencyjnie obejmowały:

cpp -M 

który pokaże Ci wszystkie nagłówki włączone.

Prawdopodobnie będziesz potrzebować dać mu korzenie wszystkich katalogów include używanych w regularnej kompilacji. Uruchom go iteracyjnie, dodając więcej ścieżek dołączania, dopóki błędy się nie zatrzymają.

Pełna forma tego polecenia w tym użytkowania jest:

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

Dotyczy to znowu tego, którego toolchain? –

+0

Dotyczy to gcc – piokuc

+0

Ah, thx! Byłem zaznajomiony z 'gcc -M' lub' g ++ -M' z poleceniem 'cpp' i ta konkretna opcja jest dla mnie nowa. Czy wyszukuje również rekursywnie zawarte pliki? Zapomnij o tym, mam to, że jest to samodzielny preprocesor ... –

0

Większość kompilatorów posiada przełącznik, aby je po prostu przetwórz pliku. Co oznacza między innymi, że rozszerzają cały kod #include na rzeczywisty kod. Zwykle zawierają komentarz (właściwy komentarz C) na linii oryginalnego uwzględnienia. Możesz więc przeszukać wynikowy wstępnie przetworzony kod dla wszystkich takich komentarzy, aby zebrać wszystkie zawarte nagłówki.

+2

Zazwyczaj nie jest to komentarz, ale dyrektywa '# line'. –

+1

A także: przełącznikiem jest zwykle '-E' (lub'/E'). –

Powiązane problemy