访问预处理程序宏定义的值

Adr*_*ing 14 macros xcode objective-c stringification c-preprocessor

如果我在GCC_PREPROCESSOR_DEFINITIONS(或预处理器宏,如果你使用XCode)下添加一个宏"FOO = bar",那么访问"FOO"值的最佳方法是什么?

目前,我使用笨拙的:

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

    #ifdef FOO
        NSLog(@"%s", MACRO_VALUE(FOO));
    #else
        NSLog(@"undefined");
    #endif
Run Code Online (Sandbox Code Playgroud)

这将输出"bar"

当然,必须有更好/更清洁的方式?

Geo*_*che 10

你在做什么的方式stringize(或字符串化)宏值.间接是不可避免的.

这甚至在Rob链接到的GCC预处理器手册部分中提到过.