Gibt es eine GCC Option, die den GCC-Präprozessor veranlasst, C Quellcode zu generieren, aber zu filtern aus irrelevantem Quellcode?
Zum Beispiel hat eine C Datei #define switch
für viele verschiedene Plattformen. Ich bin nur an einer Plattform interessiert, daher möchte ich, dass der C Präprozessor nicht verwandten Code herausfiltert. Unterstützt der GCC das?
Verwenden Sie gcc -E
, um nur den Präprozessorteil, z. Gib eine Datei in.c
läuft
%Vor% ergibt eine Datei in.i
d. Die Teile hinter dem #if 0
wurden entfernt. Wenn du #include
'd Dateien hättest, wären sie auch eingefügt worden, also bin ich mir nicht sicher, wie viel Hilfe das ist.
Es klingt so, als wolltest du eigentlich unifdef , nicht den GCC-Präprozessor.
Ja - Ihr Compiler bietet mit ziemlicher Sicherheit bestimmte Standarddefinitionen in der Umgebung, mit denen Sie Code für verschiedene Systeme ein- und ausschalten können. __GNUC__
ist ein guter Wert für GCC. Zum Beispiel:
Wenn Sie diesen Block mit GCC kompilieren, wird SOME_VALUE
12
sein, und wenn Sie beispielsweise mit MSVC kompilieren, ist SOME_VALUE
14. Eine Liste plattformspezifischer Definitionen ist unter diese Frage .
Sie können wahrscheinlich verwenden:
%Vor% Mit switch
ist der #define
, den Sie kennen, undefiniert.
Tags und Links gcc c-preprocessor