我想用
#define IS_APP_FULL_VERSION NO
代码
isAppFullVersion = IS_APP_FULL_VERSION;
设置实例变量。但是有没有办法也可以做
#if IS_APP_FULL_VERSION == "NO"
// add some methods here
#endif
但它会产生编译错误,#if (IS_APP_FULL_VERSION == "NO")
也是如此。有没有办法根据 YES
和 NO
检查它? (检查替换值)
更新:好像>
和== 0
是允许的,比如
#if IS_APP_FULL_VERSION == 0
所以我们其实可以用0
和1
来表示false和true,用== 1
来测试,但是这样会更好如果可以使用 YES
和 NO
。
更新 2:
一个可能的解决方案是:
#define IS_APP_FULL_VERSION 1
#if IS_APP_FULL_VERSION
// add some methods here
#endif
isAppFullVersion = IS_APP_FULL_VERSION;
都可以,我们只需将 1
更改为 0
即可切换代码。
最佳答案
您的基本问题是宏处理器#if 语句只有一种数据类型——整数。所有#if 表达式都以整数计算, undefined symbol 被替换为零。无法评估字符串表达式(包括比较)。
关于objective-c - 在 Objective-C 中,如何针对宏定义值进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998860/