Mit mindestens einigen C- Präprozessoren können Sie den Wert eines Makros anstelle seines Namens stringisieren, indem Sie es über ein funktionsähnliches Makro an ein anderes übergeben, das es stringiert:
#define STR1(x) #x
#define STR2(x) STR1(x)
#define THE_ANSWER 42
#define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */
Beispielanwendungsfälle hier .
Dies funktioniert zumindest in GCC und Clang (beide mit -std=c99
), aber ich bin mir nicht sicher, wie es in C-Standard-Begriffen funktioniert.
Ist dieses Verhalten durch C99 garantiert?
Wenn ja, wie garantiert C99 dies?
Wenn nicht, ab wann wechselt das Verhalten von C-definiert zu GCC-definiert?