Accéder à la valeur d'une définition de macro de préprocesseur
-
16-09-2020 - |
Question
Si j'ajoute une macro "FOO= BAR" sous GCC_PRREPROCESSOR_DEFINITIONS (ou PRÉPROCESSOR MACROS si vous utilisez Xcode "), quel serait le meilleur moyen d'accéder à la valeur de" FOO "?
Actuellement, j'utilise le maladroit:
#define MACRO_NAME(f) #f
#define MACRO_VALUE(f) MACRO_NAME(f)
#ifdef FOO
NSLog(@"%s", MACRO_VALUE(FOO));
#else
NSLog(@"undefined");
#endif
Cela produira "bar"
Sûrement, il doit y avoir une meilleure façon / nettoyante?
La solution
Ce que vous faites est le chemin to stringize (ou stringify ) valeurs macro.L'indirection est inévitable.
Ceci est mentionné dans le préprocesseur GCC Section manuelle (lien archivé) qui est liée à:
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4
Autres conseils
NSLog(@"%s", #FOO);
voir stringification .C'est la technique que vous utilisez déjà.Ce qui n'allait pas avec ça?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow