Strings mit C/C-Makros verketten
In C und C bieten Makros eine bequeme Möglichkeit, Konstanten zu definieren und Textersetzungen während der Vorverarbeitung durchzuführen -Verarbeitung. Angenommen, Sie haben zwei Makros, STR1 und STR2, die wie folgt definiert sind:
#define STR1 "s" #define STR2 "1"
Sie möchten STR1 und STR2 verketten, um „s1“ zu erhalten. Gibt es eine einfache Möglichkeit, dies mit einem einzelnen Makro zu tun, das die gewünschte Zeichenfolge erzeugt?
Ein direkter Ansatz
Im Gegensatz zu Token im Code werden Makros vom Präprozessor verarbeitet vor der Kompilierung. Daher können Sie Operatoren wie „ “ nicht verwenden, um Zeichenfolgen direkt mit Makros zu verketten. Abhängig von der spezifischen Syntax kann dies jedoch möglicherweise erreicht werden.
In diesem Fall ermöglicht Ihnen C die Verkettung von durch Leerzeichen getrennten Zeichenfolgenliteralen während der Makroerweiterung. Indem Sie die STR3-Definition wie folgt ändern, können Sie das gewünschte Ergebnis erzielen:
#define STR3 STR1 STR2
Dies erweitert sich zu:
#define STR3 "s" "1"
In C entspricht das Trennen zweier Zeichenfolgen durch Leerzeichen dem Erstellen einer einzelne Saite. Daher wird STR3 auf die Zeichenfolge „s1“ erweitert.
Alternative Ansätze
Wenn der direkte Ansatz in Ihrem Szenario nicht funktioniert, umfassen alternative Methoden die Verwendung von Präprozessor-Bedingungen oder die Übergabe Argumente an ein übergeordnetes Makro, das die Verkettung durchführt. Diese Ansätze mögen komplexer sein, bieten aber mehr Flexibilität in verschiedenen Situationen.
Das obige ist der detaillierte Inhalt vonWie kann ich Strings mithilfe von C/C-Makros verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!