Stringifizierung verstehen: Die wichtigsten Schritte der Makroerweiterung
Das Konzept der Stringifizierung in C-ähnlichen Sprachen ermöglicht es Ihnen, Ausdrücke in Zeichenfolgen umzuwandeln. Das Verständnis der an diesem Prozess beteiligten Schritte ist für eine effektive Makronutzung von entscheidender Bedeutung.
Das Problem: Unterschiede in der Ausgabe
Bedenken Sie die folgende Makrodefinition:
#define foo 4 #define str(s) #s
Wenn Sie str(foo) in Ihrem Code verwenden, wird „foo“ ausgegeben, da die Stringifizierung (Schritt 1) vor der Texterweiterung (Schritt) durchgeführt wird 2).
Wenn Sie jedoch ein zusätzliches Makro definieren:
#define xstr(s) str(s)
Und xstr(foo) verwenden, wird die Ausgabe überraschenderweise „4“ sein. Dieser Unterschied erfordert eine Untersuchung des Stringifizierungsprozesses.
Schritte der Makroerweiterung
Der Prozess der Makroerweiterung umfasst mehrere Schritte gemäß C- und C-Standards:
Anwenden der Schritte auf xstr(foo)
Warum str(foo) Gibt „foo“ aus
Im Gegensatz zu xstr(foo) liefert str(foo) „foo“, weil:
Daher wird die Verwendung eines Hilfsmakros wie xstr sichergestellt Die Texterweiterung (Schritt 2) wird vor der Stringifizierung (Schritt 1) durchgeführt, um korrekte String-Konvertierungen zu ermöglichen.
Das obige ist der detaillierte Inhalt vonWarum gibt „xstr(foo)' in der C-ähnlichen Makroerweiterung „4' aus, während „str(foo)' „foo' ausgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!