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
Patricia ArquetteOriginal
2024-12-20 14:50:161004Durchsuche

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

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)

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

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!

Stellungnahme:
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