Mögliches Duplikat:
C-Makros zum Erstellen von Zeichenfolgen
Ich habe eine Funktion, die ein Argument des Typs akzeptiert char*
wie f("string");
Wenn das String-Argument nebenbei im Funktionsaufruf definiert wird, wie können Makros innerhalb des String-Körpers erweitert werden?
Zum Beispiel:
#define COLOR #00ff00
f("abc COLOR");
wäre gleichbedeutend mit
f("abc #00ff00");
stattdessen wird die Erweiterung nicht durchgeführt, und die Funktion erhält wörtlich abc COLOR
.
Insbesondere muss ich das Makro genau erweitern \"#00ff00\"
sodass dieses in Anführungszeichen gesetzte Token mit dem Rest des übergebenen Zeichenfolgenarguments verkettet wird f()
, Anführungszeichen enthalten; Das heißt, der Präprozessor muss seine Arbeit beenden und den Compiler begrüßen, der den Code umwandelt f("abc COLOR");
zu f("abc \"#00ff00\"");
Der Präprozessor berührt keine Zeichenfolgenliterale.
– alk
18. Oktober 2012 um 16:11 Uhr
stackoverflow.com/questions/798221/c-macros-to-create-strings
– Singpolyma
18. Oktober 2012 um 16:17 Uhr