Type entries and storage classes
Table 7-26, ``Type entries by storage class''
shows the type entries that are legal for each storage class.
Table 7-26 Type entries by storage class
---------|-------------------------------|--------------
| d Entry |
Storage | ------------------------------| typ Entry
Class | Function?| Array?| Pointer?| Basic Type
---------|-----------|--------|----------|--------------
C_AUTO | no | yes | yes | Any except
| | | | T_MOE
C_EXT | yes | yes | yes | Any except
| | | | T_MOE
C_STAT | yes | yes | yes | Any except
| | | | T_MOE
C_REG | no | no | yes | Any except
| | | | T_MOE
C_LABEL | no | no | no | T_NULL
C_MOS | no | yes | yes | Any except
| | | | T_MOE
C_ARG | yes | no | yes | Any except
| | | | T_MOE
C_STRTAG | no | no | no | T_STRUCT
C_MOU | no | yes | yes | Any except
| | | | T_MOE
C_UNTAG | no | no | no | T_UNION
C_TPDEF | no | yes | yes | Any except
| | | | T_MOE
C_ENTAG | no | no | no | T_ENUM
C_MOE | no | no | no | T_MOE
C_REGPARM| no | no | yes | Any except
| | | | T_MOE
---------|-----------|--------|----------|--------------
C_FIELD | no | no | no | T_ENUM,
| | | | T_UCHAR,
| | | | T_USHORT,
| | | | T_UNIT,
| | | | T_ULONG
---------|-----------|--------|----------|--------------
C_BLOCK | no | no | no | T_NULL
C_FCN | no | no | no | T_NULL
C_EOS | no | no | no | T_NULL
C_FILE | no | no | no | T_NULL
---------|-----------|--------|----------|--------------
C_ALIAS | no | no | no | T_STRUCT,
| | | | T_UNION,
| | | | T_ENUM
---------|-----------|--------|----------|--------------
C_WEAKEXT| no | no | no | Any except
| | | | T_MOE
Conditions for the d entries apply to d1 through d6, except that it is impossible to have two consecutive derived types of function.
Although function arguments can be declared as arrays, they are
changed to pointers by default.
Therefore, no function argument
can have array as its first derived type.