Makrobasierte String-Verkettung in C/C
Direkte Verkettung makrodefinierter Strings in C/C ist mit ## nicht möglich Präprozessoroperator, der hauptsächlich für die Tokenverkettung gedacht ist. Es gibt jedoch eine Problemumgehung, um dies zu erreichen.
Betrachten Sie das folgende Beispiel:
#define STR1 "s" #define STR2 "1" #define STR3 STR1 STR2
Dieser Code definiert drei Makros: STR1 mit dem String-Literal „s“, STR2 mit „1“, und STR3 als Verkettung von STR1 und STR2. Die Erweiterung von STR3 führt zu:
#define STR3 "s" "1"
In der C-Sprache ist jedoch die Aneinanderreihung zweier durch Leerzeichen getrennter Zeichenfolgen (wie in „s“ „1“) äquivalent zu einer einzelnen Zeichenfolge „s1“ .
Daher verkettet der folgende Code STR1 und STR2 direkt, ohne dass ## erforderlich ist. Operator:
#define STR3 STR1 STR2
Dies erweitert sich zu:
#define STR3 "s1"
Das obige ist der detaillierte Inhalt vonWie kann ich makrodefinierte Zeichenfolgen in C/C ohne den Operator verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!