Skip to content

Instantly share code, notes, and snippets.

@steipete
Created December 5, 2011 22:26
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steipete/1435680 to your computer and use it in GitHub Desktop.
Save steipete/1435680 to your computer and use it in GitHub Desktop.
Don't be a fool and wonder why nothing is working... ADD THIS CHECK.
// ARC is compatible with iOS 4.0 upwards, but you need at least Xcode 4.2 with Clang LLVM 3.0 to compile it.
#if !defined(__clang__) || __clang_major__ < 3 || !__has_feature(objc_arc)
#error This project must be compiled with ARC (Xcode 4.2+ with LLVM 3.0 and above)
#endif
@jverkoey
Copy link

jverkoey commented Dec 5, 2011

Solid. Adding this to the Nimbus arc branch.

@steipete
Copy link
Author

steipete commented Dec 5, 2011

Cool! Note that usually !__has_feature(objc_arc) should be enough, other checks were added at a time w/o arc, when i had troubles with gcc. Not sure if they make sens, I don' t believe apple will ever add ARC-support to gcc.

Copy link

ghost commented Dec 5, 2011

The recommended idiom for checking features is:

#ifndef __has_feature         // Optional of course.
  #define __has_feature(x) 0  // Compatibility with non-clang compilers.
#endif

i.e., there’s no need to check for Clang specifically. Having done that, one can safely use __has_feature(), e.g.

#if !__has_feature(objc_arc)
  #error …
#endif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment