Specifications

CAVR-4
Part 2. Compiler reference
Data representation
145
Type attributes can be further divided into memory attributes and general type
attributes.
Memory attributes
A memory attribute corresponds to a certain logical or physical memory in the
microcontroller.
Available memory attributes for functions: __nearfunc, and __farfunc
Available memory attributes for data objects: __tiny, __near, __far, __huge,
__regvar, __eeprom, __tinyflash, __flash, __farflash, __hugeflash,
__generic, __io, and __ext_io
For each level of indirection, you can only specify one memory attribute.
General type attributes
The following general type attributes are available:
Function type attributes change the calling convention of a function:
__interrupt, __task, and __version_1
Data type attributes: const, and volatile
For each level of indirection, you can specify as many type attributes as required.
To read more about volatile, see Declaring objects volatile, page 146.
OBJECT ATTRIBUTES
Object attributes affect functions and data objects, but not how the function is called or
how the data is accessed. This means that an object attribute does not need to be present
in the declaration of an object.
The following object attributes are available:
Object attributes that can be used for variables: __no_init
Object attributes that can be used for functions and variables: location, @, and
__root
Object attributes that can be used for functions: __intrinsic, __monitor,
__noreturn, and vector.
Note: The __intrinsic attribute is reserved for compiler internal use only.
You can specify as many object attributes as required.