【发布时间】:2013-07-03 02:45:27
【问题描述】:
#define A7VERSION() ({[[[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."] objectAtIndex:0] intValue];})
#define IS_OS_7 A7VERSION()>=7
上面的声明似乎编译得很好。
但是,只要我将它添加一个 .m 文件,我就会收到以下异常“预处理器表达式开头的标记无效”。我无法理解我可能错在哪里
@implementation AppViewController
#if IS_OS_7
….
#else
….
#endif
@end
【问题讨论】:
-
由于 Objective-C 的动态特性,无法在编译时确定方法调用的值,这意味着您可以做的只是运行时检查。运行时检查的一个很好的列表在这里:stackoverflow.com/questions/3339722/check-iphone-ios-version
-
这不是一个重复的问题。它与预处理器有关。我的问题标题也没有指定它的版本检查代码。我希望它在运行时工作,这是错误的,并由@bbum 纠正
标签: objective-c xcode c-preprocessor