访问预处理器宏定义的值
-
16-09-2020 - |
题
如果我在gcc_preprocessor_definition下添加宏“foo= bar”(如果使用xcode,则使用Xcode“),则访问”foo“值的最佳方法是什么?
目前,我使用笨拙:
#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 preprocessor 手动部分(存档链接)
. #define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4
其他提示
NSLog(@"%s", #FOO);
.
请参阅 stringification 。这是您已经使用的技术。它有什么问题?
不隶属于 StackOverflow