如何定义预处理器宏来检查iOS版本
我用它来检查 iOS 版本,但它不起作用:
#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_5_0
#define kCFCoreFoundationVersionNumber_iPhoneOS_5_0 675.000000
#endif
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
#define IF_IOS5_OR_GREATER(...) \
if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_5_0) \
{ \
__VA_ARGS__ \
}
#else
#define IF_IOS5_OR_GREATER 0
#endif
当我
#if IF_IOS5_OR_GREATER
NSLog(@"iOS5");
#endif
什么也没发生时。这里有什么问题吗?
I use it to check iOS version, but it doesn't work:
#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_5_0
#define kCFCoreFoundationVersionNumber_iPhoneOS_5_0 675.000000
#endif
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
#define IF_IOS5_OR_GREATER(...) \
if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_5_0) \
{ \
__VA_ARGS__ \
}
#else
#define IF_IOS5_OR_GREATER 0
#endif
when I make
#if IF_IOS5_OR_GREATER
NSLog(@"iOS5");
#endif
nothing happens. Is something wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
更简单:
Much simpler:
等等
只要寻找那个常数即可。所有目标 c 常量都以两个下划线开头
etc
Just look for that constant. All the objective c constants start with two underscores
您已经定义了一个宏,但您以非宏方式使用它。使用相同的宏定义尝试类似的操作。
(这不是您的
#if
/#endif
块。)You've defined a macro, but you're using it in the non-macro way. Try something like this, with your same macro definition.
(This is instead of your
#if
/#endif
block.)定义此方法:
然后将宏定义为该方法。
Define this method:
Then define the macro as that method.
对于运行时检查,请使用如下所示的内容:
如果您在 UIDevice 上为其创建一个类别,则可以按如下方式使用它:
...
For a runtime check use something like this:
If you create a category on UIDevice for it, you can use it as such:
...