Preprocessor
From cppreference.net
<
c
Der Präprozessor wird in Übersetzungsphase 4 ausgeführt, vor der Kompilierung. Das Ergebnis der Präprozessierung ist eine einzelne Datei, die dann an den eigentlichen Compiler übergeben wird.
Inhaltsverzeichnis |
Direktiven
Die Präprozessordirektiven steuern das Verhalten des Präprozessors. Jede Direktive belegt eine Zeile und hat folgendes Format:
-
#Zeichen -
Präprozessor-Direktive (eine von
define,undef,include,if,ifdef,ifndef,else,elif,elifdef,elifndef(seit C23) ,endif,line,embed(seit C23) ,error,warning(seit C23) ,pragma) [1] - Argumente (hängt von der Direktive ab)
- Zeilenumbruch.
Die Null-Direktive (
#
gefolgt von einem Zeilenumbruch) ist erlaubt und hat keine Wirkung.
Fähigkeiten
Der Präprozessor verfügt über folgende Quelltext-Übersetzungsfähigkeiten:
-
bedingte
Kompilierung von Teilen der Quelldatei (gesteuert durch Direktiven
#if,#ifdef,#ifndef,#else,#elif,#elifdef,#elifndef(seit C23) und#endif). -
Ersetzen
von Textmakros unter möglicher Verkettung oder Quotierung von Identifikatoren (gesteuert durch Direktiven
#defineund#undef, sowie Operatoren#und##) -
Einbinden
anderer Dateien (gesteuert durch Direktive
#includeund geprüft mit__has_include(seit C23) ) -
Verursachen eines
Fehlers
oder einer
Warnung
(seit C23)
(gesteuert durch Direktive
#errorbzw.#warning(seit C23) )
Die folgenden Aspekte des Präprozessors können gesteuert werden:
-
implementationsdefiniert
Verhalten (gesteuert durch Direktive
#pragmaund Operator_Pragma(seit C99) ) -
Dateiname und Zeileninformation
verfügbar für den Präprozessor (gesteuert durch Direktiven
#line)
Fußnoten
- ↑ Dies sind die durch den Standard definierten Direktiven. Der Standard definiert kein Verhalten für andere Direktiven: Sie könnten ignoriert werden, eine nützliche Bedeutung haben oder das Programm fehlerhaft machen. Selbst wenn sie ansonsten ignoriert werden, werden sie aus dem Quellcode entfernt, wenn der Präprozessor fertig ist. Eine häufige nicht-standardisierte Erweiterung ist die Direktive #warning , die eine benutzerdefinierte Meldung während der Kompilierung ausgibt. (bis C23)
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 6.10 Präprozessor-Direktiven (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 6.10 Präprozessordirektiven (S: 117-129)
- C11-Standard (ISO/IEC 9899:2011):
-
- 6.10 Präprozessordirektiven (S: 160-178)
- C99-Standard (ISO/IEC 9899:1999):
-
- 6.10 Präprozessor-Direktiven (S: 145-162)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 3.8 Präprozessordirektiven
Siehe auch
|
C-Dokumentation
für
Vordefinierte Makrosymbole
|
|
|
C-Dokumentation
für
Makrosymbol-Index
|
|
|
C++-Dokumentation
für
Präprozessor
|