GCC-Präprozessor [Duplikat]

8

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?

    
richard 12.10.2010, 17:18
quelle

4 Antworten

18

Verwenden Sie gcc -E , um nur den Präprozessorteil, z. Gib eine Datei in.c

%Vor%

läuft

%Vor%

ergibt eine Datei in.i

%Vor%

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.

    
Benjamin Bannier 12.10.2010 17:25
quelle
5

Es klingt so, als wolltest du eigentlich unifdef , nicht den GCC-Präprozessor.

    
Christoffer 12.10.2010 17:30
quelle
2

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:

%Vor%

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 .

    
Carl Norum 12.10.2010 17:21
quelle
0

Sie können wahrscheinlich verwenden:

%Vor%

Mit switch ist der #define , den Sie kennen, undefiniert.

    
Nicolas Viennot 12.10.2010 18:41
quelle

Tags und Links