Accessing the value of a Preprocessor Macro defini

2019-03-18 03:28发布

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?

2条回答
成全新的幸福
2楼-- · 2019-03-18 04:16
NSLog(@"%s", #FOO);

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

查看更多
聊天终结者
3楼-- · 2019-03-18 04:25

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.

查看更多
登录 后发表回答