2012-08-30 25 views
2

有没有一种方法可以测试(使用预处理器)如果文件正在Xcode 4.4或更新的版本下编译?或者,更具体地说,测试编译器是否会自动调用@synthesize属性,如果不是则抛出编译错误?Xcode 4.4或更新版本的预处理器检查

回答

4

您可以使用此以测试功能:

#if (defined(__clang__) && __has_feature(objc_default_synthesize_properties)) 
#warning Got it 
#else 
#error omg no auto synthesis 
#endif 

的功能的完整列表记录在这里:http://clang.llvm.org/docs/LanguageExtensions.html

+2

是啊,这是清洁检查的功能,而不是编译器的版本,因为我WA这样做。 –

+1

@BradLarson,但你的回答回答了问题+1的两个部分之一。 – justin

2

,因为这是提供与LLVM编译器的4.x版本中,你应该可以使用以下方法来测试新版本足够的存在:

#if __clang__ && (__clang_major__ >= 4) 
// New version code here 
#else 
// Fallback code for older version here 
#endif