Au moins certains C préprocesseurs laissez vous stringize la valeur d'une macro, plutôt que son nom, en le passant à travers une seule fonction, comme la macro à un autre qui stringizes:
#define STR1(x) #x
#define STR2(x) STR1(x)
#define THE_ANSWER 42
#define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */
Exemple de cas d'utilisation ici.
Cela ne fonctionne, au moins dans GCC et Clang ( -std=c99
), mais je ne suis pas sûr de la façon dont il fonctionne dans C-conditions standard.
Est ce comportement garantis par C99?
Si oui, comment C99 garantie?
Si non, à quel point le comportement de passer de C-défini à GCC-défini?