#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
答案 0 :(得分:10)
问题与iOS 7无关。
您的#define
不会导致在编译时可以解决的问题。仅当条件是可以在编译时确定的条件时,#ifdef
才有效。它不能用于根据运行应用程序的环境在运行时更改行为。