Если я добавляю макрос "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
Это произведет "панель"
Конечно, должен быть лучший/более чистый путь?
То, что вы делаете, - это способ stringize (или stringify) макрозначений. Непрямой перевод неизбежен.
Об этом даже упоминается в разделе руководства по препроцессору GCC, на который ссылается Роб.
NSLog(@"%s", #FOO);
См. Стрингизация. Это техника, которую вы уже используете. Что было не так?