2010-10-12 12 views
16

Czy istnieje opcja, że ​​preprocesor GCC może generować kod źródłowy C i odfiltrowywać nieistotny kod źródłowy? Na przykład plik .c ma przełącznik do definiowania dla wielu różnych platform Interesuje mnie tylko jedna platforma i chcę, aby preprocesor C odfiltrował niepowiązany kod.Jak uruchomić preprocesor GCC, aby uzyskać kod po rozszerzeniu makr takich jak #define?

Czy GCC obsługuje to?

+1

Należy zauważyć, że po uruchomieniu preprocesora, będziesz miał również wszystkie pliki '# include' na górze pliku (więc przygotuj się na dużo przewijania). – delnan

+0

Istnieje duplikat tego pytania na http://stackoverflow.com/questions/3917316/gcc-preprocessor z dodatkowymi odpowiedziami i dyskusją. –

+0

Studio graficzne: http://stackoverflow.com/questions/277258/c-c-source-file-after-preprocessing –

Odpowiedz

11

Chociaż opcja -E wykona wszystkie przetwarzaniem wstępnym, ale również produkuje jedne bardzo „surowy” wyjście, które może nie być, co chcesz (w zależności od tego, co chcesz).

Jeśli chcesz debugować rozszerzenie makra, które nie spełnia Twoich oczekiwań, dobrym pomysłem jest wykonanie E. Jeśli chcesz po prostu odfiltrować „kod nieaktywny”, ale pozostawić pozostałego kodu w bardziej lub mniej oryginalna forma, warto spojrzeć na odpowiedzi na następujące przepełnienie stosu pytanie:

Powiązane problemy