Developer's Topics
Chapter 7, Common Object File Format (COFF)

Type entries and storage classes

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.