在预处理程序表达式Xcode的开头处的令牌无效

时间:2013-07-05 05:02:46

标签: objective-c xcode c-preprocessor

#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

1 个答案:

答案 0 :(得分:10)

问题与iOS 7无关。

您的#define不会导致在编译时可以解决的问题。仅当条件是可以在编译时确定的条件时,#ifdef才有效。它不能用于根据运行应用程序的环境在运行时更改行为。