What does the unavailable attribute in Objective C do?
__attribute__((unavailable("message")))
Is there any online reference to this and other attributes in Clang?
An attribute provides additional information about the declaration or type. For example, the discardableResult attribute on a function declaration indicates that, although the function returns a value, the compiler shouldn't generate a warning if the return value is unused.
An asterisk before a variable definition indicates that the variable is a pointer to an object. For example, let's consider the first line of code above: NSString *foo = [NSString stringWithUTF8String:"Hello World!"]; We're defining foo as a pointer to an object of type NSString.
The unavailable
attribute marks a function declaration so that you can generate an error message if someone tries to use it. It's essentially the same as the deprecated
attribute, except that trying to use a deprecated
function just causes a warning, but using an unavailable
one causes an error. Documentation at: http://clang.llvm.org/docs/LanguageExtensions.html
Here's a simple use case example. First the code:
void badFunction(void) __attribute__((unavailable("Don't use badFunction, it won't work.")));
int main(void)
{
badFunction();
return 0;
}
And then building it:
$ make example
cc example.c -o example
example.c:5:5: error: 'badFunction' is unavailable: Don't use badFunction, it
won't work.
badFunction();
^
example.c:1:6: note: function has been explicitly marked unavailable here
void badFunction(void) __attribute__((unavailable("Don't use...
^
1 error generated.
make: *** [example] Error 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With