9.10.8 mode (mode)

This attribute specifies the data type for the declaration as whichever type corresponds to the mode mode. This in effect lets you request an integer or floating point type according to its width. Valid values for mode are as follows:

Mode Width Compiler Type
QI 8 bits int8_t
HI 16 bits int16_t
SI 32 bits int32_t
DI 64 bits int64_t
SF 32 bits float
DF 64 bits long double

This attribute is useful for writing code that is portable across all supported compiler targets. For example, the following function adds two 32-bit signed integers and returns a 32-bit signed integer result:

typedef int32_t __attribute__((__mode__(SI))) int32;
int32 add32(int32 a, int32 b)
  {
        return(a+b);
  }

You may also specify a mode of byte or __byte__ to indicate the mode corresponding to a one-byte integer, word or __word__ for the mode of a one-word integer, and pointer or __pointer__ for the mode used to represent pointers.