| Specifying Attributes of Types

Previous | GNU C Language Extensions | Next

The keyword `__attribute__` allows you to specify special attributes of `struct` and `union` types when you define such types. This keyword is followed by an attribute specification inside double parentheses. The following attributes are currently defined for types:

- aligned
- packed
- transparent_union
- may_alias
- unused
- deprecated

Other attributes are defined for functions (see Function Attributes) and for variables (see Variable Attributes).
You may also specify any one of these attributes with `__` preceding and following its keyword. This allows you to use these attributes in header files without being concerned about a possible macro of the same name. For example, you may use `__aligned__` instead of `aligned`.
You may specify the `aligned` and `transparent_union` attributes either in a `typedef` declaration or just past the closing curly brace of a complete enum, struct or union type definition and the `packed` attribute only past the closing brace of a definition.
You may also specify attributes between the enum, struct or union tag and the name of the type rather than after the closing brace.
See Attribute Syntax for details of the exact syntax for using attributes.
To specify multiple attributes, separate them by commas within the double parentheses: for example, `__attribute__ ((aligned (16), packed))`.