objective-c - 在 Objective-C 中,如何针对宏定义值进行测试?

标签 objective-c ios

我想用

#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") 也是如此。有没有办法根据 YESNO 检查它? (检查替换值)


更新:好像>== 0是允许的,比如

#if IS_APP_FULL_VERSION == 0

所以我们其实可以用01来表示false和true,用== 1来测试,但是这样会更好如果可以使用 YESNO


更新 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/

相关文章:

ios - 如何删除 canDisplayAdBanner 创建的空白区域?

ios - 在条件中声明一个类的对象

ios - Game Over Class 上的 iAd 横幅实现

javascript - iOS 上的 Safari 涉及陈旧的 $http.get 结果

iphone - 使用 NSCoding 在 App 中序列化的数据是否安全?

ios - 如何在动画期间清除 Collection View 单元格的 View /图层缓存?

iphone - 将数据保存在 UITableView 中

ios - 在 SwiftUI 2.0 中更改应用程序图标时发生 fatal error

ios - 以编程方式获取 uibutton 的约束

iphone - 将特定符号从 json 转换为普通 utf-8