qc.hlp (Table of Contents; Topic list)
pack
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
  Pragma:   pack
 
  Syntax:   #pragma pack( [{1 | 2 | 4 }] )
 
  Summary:  Specifies packing alignment for structure types.
 
     When storage is allocated for structures, structure members are
     ordinarily stored as follows:
 
        ■ Items of type char or unsigned char, or arrays containing
          items of these types, are byte aligned.
        ■ Structures are word aligned; structures of odd size are
          padded to an even number of bytes.
        ■ All other types of structure members are word aligned.
 
     To conserve space, or to conform to existing data structures, you
     may want to store structures more or less compactly. The /Zp
     compiler option or the pack pragma controls how structure data is
     "packed" into memory.
 
     Use the /Zp option to specify the same packing for all structures
     in a module. When you give the /Zp[n] option, where n is 1, 2, or
     4, each structure member after the first is stored on n-byte
     boundaries, depending on the option you choose. If you use the /Zp
     option without an argument, structure members are packed on 1-byte
     boundaries.
 
     On some processors, the /Zp option can result in slower program
     execution because of the time required to unpack structure members
     when they are accessed. For example, on an 8086 processor, this
     option can reduce efficiency if members with int or long type are
     packed in such a way that they begin on odd-byte boundaries.
 
     Use the pack pragma to specify packing other than the packing
     specified on the command line for particular structures. Give the
     pack( n ) pragma, where n is 1, 2, or 4, before structures that
     you want to pack differently. To reinstate the packing given on
     the command line, give the pack() pragma with no arguments.
 
                         Compiled with
     Syntax              /Zp Option?     Action
 
     #pragma pack()      Yes             Reverts to packing
                                         specified by the compiler
                                         for structures that follow
 
     #pragma pack()      No              Reverts to default packing
                                         for structures that follow
 
     #pragma pack( n )   Yes or no       Packs the following
                                         structures to the given
                                         byte boundary until
                                         changed or disabled
                                    -♦-