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

Storage classes

Storage classes

The storage class field has one of the values described in Table 7-18, ``Storage classes'' These #defines may be found in the header file fstorclass.h. 

Table 7-18 Storage classes

 Mnemonic    Value   Storage Class
 -------------------------------------------------------------
 C_EFCN        -1    physical end of a function
 C_NULL         0    -
 C_AUTO         1    automatic variable
 C_EXT          2    external symbol
 C_STAT         3    static
 C_REG          4    register variable
 C_EXTDEF       5    external definition
 C_LABEL        6    label
 C_ULABEL       7    undefined label
 C_MOS          8    member of structure
 C_ARG          9    function argument
 C_STRTAG      10    structure tag
 C_MOU         11    member of union
 C_UNTAG       12    union tag
 C_TPDEF       13    type definition
 C_USTATIC     14    uninitialized static
 C_ENTAG       15    enumeration tag
 C_MOE         16    member of enumeration
 C_REGPARM     17    register parameter
 C_FIELD       18    bit field
 C_BLOCK      100    beginning and end of block
 C_FCN        101    beginning and end of function
 C_EOS        102    end of structure
 C_FILE       103    file name
 C_LINE       104    used only by utility programs
 C_ALIAS      105    duplicated tag
 C_HIDDEN     106    like static, used to avoid name conflicts
 C_SHADOW     107    shadow symbol
 C_WEAKEXT    108    like C_EXT, but with weak linkage
All of these storage classes except for C_ALIAS and C_HIDDEN are generated by the cc or as commands. The compress utility, cprs(CP), generates the C_ALIAS mnemonic. This utility removes duplicated structure, union, and enumeration definitions and puts alias entries in their places. The storage class C_HIDDEN is not used by any UNIX system tools. Some of these storage classes are used only internally by the C compilation systems. These storage classes are C_EFCN, C_EXTDEF, C_ULABEL, C_USTATIC, and C_LINE.