I use it to check iOS version, but it doesn\'t work:
#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_5_0 #define kCFCoreFoundationVersionNumber_iPhoneOS_5_0
You've defined a macro, but you're using it in the non-macro way. Try something like this, with your same macro definition.
IF_IOS5_OR_GREATER(NSLog(@"iOS5");)
(This is instead of your #if/#endif block.)
#if
#endif