Function attributes are extensions implemented to enhance the portability of programs developed with GNU C. Specifiable attributes for functions provide explicit ways to help the compiler optimize function calls and to instruct it to check more aspects of the code. Others provide additional functionality.
IBM C implements a subset of the GNU C function attributes. If a particular function attribute is not implemented, its specification is accepted and the semantics are ignored. These language features are collectively available when compiling in any of the extended language levels.
Function attribute syntax: function declaration >>-function declarator--__attribute__---------------------------> .-,--------------------------. V | >--((----+-attribute_name---------+-+--))--;------------------->< '-__--attribute_name--__-'
/* Specify the attribute on a function prototype declaration */
void f(int i, int j) __attribute__((individual_attribute_name));
void f(int i, int j) { }
int __attribute__((individual_attribute_name)) foo(int i) { }
A function attribute specification using the form __attribute_name__ (that is, the attribute name with double underscore characters leading and trailing) reduces the likelihood of a name conflict with a macro of the same name.