Accessing the value of a Preprocessor Macro definition

天涯浪子 提交于 2019-12-03 16:18:13

问题


If I add a macro "FOO=bar" under GCC_PREPROCESSOR_DEFINITIONS (or Preprocessor Macros if you use XCode"), what would be the best way to access the value of "FOO"?

Currently, I use the clumsy:

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

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

This will output "bar"

Surely, there must be a better/cleaner way?


回答1:


What you are doing is the way to stringize (or stringify) macro values. The indirection is unavoidable.

This is even mentioned in the GCC preprocessor manual section that Rob linked to.




回答2:


NSLog(@"%s", #FOO);

See Stringification. It's the technique you're already using. What was wrong with it?



来源:https://stackoverflow.com/questions/3261763/accessing-the-value-of-a-preprocessor-macro-definition

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!