Доступ к значению определения макроса предварительнопроцессора

StackOverflow https://stackoverflow.com/questions/3261763

Вопрос

Если я добавлю макрос "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 Ручной раздел (архивированная ссылка) , которые ROB связаны с:

 #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);
.

Смотрите Структура .Это техника, которую вы уже используете.Что с этим было не так?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top