Heim > Backend-Entwicklung > C++ > Wie kann ich String-Literale in C/C-Makros direkt verketten?

Wie kann ich String-Literale in C/C-Makros direkt verketten?

Patricia Arquette
Freigeben: 2024-12-20 14:50:16
Original
941 Leute haben es durchsucht

How Can I Directly Concatenate String Literals in C/C   Macros?

String-Verkettung in C/C-Makros

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
Nach dem Login kopieren

Es stellt sich die Frage: Ist es möglich, STR1 und STR2 direkt zu verketten, um „s1“ mithilfe einer einzigen Makrodefinition zu erhalten?

Standard-String-Verkettung

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)
Nach dem Login kopieren

Vereinfachte Verkettung für Strings

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
Nach dem Login kopieren

Dies erweitert sich zu:

#define STR3 "s" "1"
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage