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?

Était-ce utile?

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
scroll top