Beim Definieren von Makros mit String-Literalen ist es oft notwendig, diese zu verketten, um einen neuen String zu bilden. Betrachten wir ein Beispiel:
#define STR1 "s" #define STR2 "1" #define STR3 STR1 ## STR2
Es stellt sich die Frage: Ist es möglich, STR1 und STR2 direkt zu verketten, um „s1“ mithilfe einer einzigen Makrodefinition zu erhalten?
Traditionell wird die String-Verkettung in Makros durch die Verwendung des Stringifizierungsoperators (#) erreicht. Dieser Ansatz erfordert jedoch die Übergabe von Argumenten an eine Zwischenmakrofunktion.
#define CONCAT(x, y) x ## y #define STR3 CONCAT(STR1, STR2)
Für den speziellen Fall der Verkettung von String-Literalen gibt es einen vereinfachten Ansatz. Indem wir den Stringifizierungsoperator weglassen, können wir die Strings direkt verketten:
#define STR3 STR1 STR2
Dies erweitert sich zu:
#define STR3 "s" "1"
In der C-Sprache werden Strings mit Leerzeichen nebeneinandergestellt (wie in „s“ „1“) entspricht einer einzelnen Zeichenfolge „s1“. Daher bietet diese vereinfachte Methode eine direkte Möglichkeit, String-Literale in C/C-Makros zu verketten.
Das obige ist der detaillierte Inhalt vonWie kann ich String-Literale in C/C-Makros direkt verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!