Доступ к значению Макроопределения Препроцессора

Если я добавляю макрос "FOO=bar" под GCC_PREPROCESSOR_DEFINITIONS (или Макросы Препроцессора, если бы Вы используете XCode"), каков был бы лучший способ получить доступ к значению "НЕЧТО"?

В настоящее время я использую неуклюжее:

    #define MACRO_NAME(f) #f
    #define MACRO_VALUE(f)  MACRO_NAME(f)

    #ifdef FOO
        NSLog(@"%s", MACRO_VALUE(FOO));
    #else
        NSLog(@"undefined");
    #endif

Это произведет "панель"

Конечно, должен быть лучший/более чистый путь?

14
задан Brian Tompsett - 汤莱恩 12 July 2016 в 19:06
поделиться

2 ответа

То, что вы делаете, - это способ stringize (или stringify) макрозначений. Непрямой перевод неизбежен.

Об этом даже упоминается в разделе руководства по препроцессору GCC, на который ссылается Роб.

10
ответ дан 1 December 2019 в 14:43
поделиться
NSLog(@"%s", #FOO);

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

2
ответ дан 1 December 2019 в 14:43
поделиться