Доступ к значению определения макроса предварительнопроцессора
-
16-09-2020 - |
Вопрос
Если я добавлю макрос "foo= bar" под GCC_PREPROCESSOR_DEFINITORITIONS (или препроцессорными макросами, если вы используете xCode "), что было бы лучшим способом доступа к значению« Foo »?
В настоящее время я использую неуклюжий:
#define MACRO_NAME(f) #f
#define MACRO_VALUE(f) MACRO_NAME(f)
#ifdef FOO
NSLog(@"%s", MACRO_VALUE(FOO));
#else
NSLog(@"undefined");
#endif
.
Это выводят "бар"
Конечно, должен быть лучший / очистительный путь?
Решение
Что вы делаете, это Путь на Stringize (или Stringify ).Косвеление неизбежно.
Это упоминается в препроцессоре GCC
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4
. Другие советы
NSLog(@"%s", #FOO);
.
Смотрите Структура .Это техника, которую вы уже используете.Что с этим было не так?
Не связан с StackOverflow