Acceso al valor de una definición macro de preprocesador.
-
16-09-2020 - |
Pregunta
Si agrego una macro "foo= bar" en gcc_preprocessor_definitions (o macros de preprocesador si usa xcode "), ¿cuál sería la mejor manera de acceder al valor de" foo "?
Actualmente, uso el torpe:
#define MACRO_NAME(f) #f
#define MACRO_VALUE(f) MACRO_NAME(f)
#ifdef FOO
NSLog(@"%s", MACRO_VALUE(FOO));
#else
NSLog(@"undefined");
#endif
Esto saldrá de la "barra"
Seguramente, debe haber una forma mejor / limpia?
Solución
Lo que está haciendo es el camino a Stringize (o rinify ) Macro Valores.La indirección es inevitable.
Esto se menciona en el preprocesador de GCC Sección manual (enlace archivado) que Rob vinculado a:
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4
Otros consejos
NSLog(@"%s", #FOO);
Consulte stringification .Es la técnica que ya estás usando.¿Qué estaba mal con eso?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow