Looking for c Keywords? Try Ask4Keywords

C LanguagePreprozessor und Makros


Einführung

Alle Präprozessorbefehle beginnen mit dem Hash-Symbol # . AC-Makro ist nur ein Präprozessorbefehl, der mit der #define Präprozessor-Direktive definiert wird. Während der Vorverarbeitungsphase ersetzt der C-Präprozessor (ein Teil des C-Compilers) einfach den Hauptteil des Makros, wo immer sein Name erscheint.

Bemerkungen

Wenn ein Compiler auf ein Makro im Code stößt, führt er einen einfachen String-Austausch durch. Es werden keine zusätzlichen Operationen ausgeführt. Aus diesem Grund berücksichtigen Änderungen durch den Präprozessor nicht den Geltungsbereich von C-Programmen. Beispielsweise ist eine Makrodefinition nicht darauf beschränkt, innerhalb eines Blocks zu liegen, und wird daher nicht durch ein '}' , das eine Blockanweisung beendet.

Der Präprozessor ist vom Entwurf her nicht vollständig - es gibt verschiedene Arten von Berechnungen, die nicht vom Präprozessor allein ausgeführt werden können.

Normalerweise verfügen Compiler über ein Befehlszeilenflag (oder eine Konfigurationseinstellung), mit dem wir die Kompilierung nach der Vorverarbeitungsphase stoppen und das Ergebnis überprüfen können. Auf POSIX-Plattformen ist dieses Flag -E . Wenn Sie gcc mit diesem Flag ausführen, wird die erweiterte Quelle in stdout ausgegeben:

$ gcc -E cprog.c

Oft ist der Präprozessor als separates Programm implementiert, das vom Compiler aufgerufen wird. Der gebräuchliche Name für dieses Programm lautet cpp . Eine Reihe von Präprozessoren gibt unterstützende Informationen aus, z. B. Informationen zu Zeilennummern, die von den nachfolgenden Kompilierungsphasen verwendet werden, um Debugging-Informationen zu generieren. Wenn der Präprozessor auf gcc basiert, unterdrückt die Option -P diese Informationen.

$ cpp -P cprog.c

Preprozessor und Makros Verwandte Beispiele