Keil Logo Arm Logo

C251 User's Guide

PACK Compiler Directive

Abbreviation

None.

Arguments

A decimal number (1 or 2) enclosed in parentheses.

Default

PACK(2)

µVision

Options — C251 — Misc Controls.

Description

The PACK directive causes the compiler to generate byte-aligned or half-word-aligned structures. This is useful when exchanging data with other systems where no alignment is required.

Note

  • By default, the compiler assumes that structure members are aligned on byte boundaries. PACK(2) may increase the size of a structure since alignment gaps are inserted for padding.
Example
#pragma pack(1)     /* byte alignment */

struct s1  {
  int  i1;     // i1 has offset 0
  char c1;     // c1 has offset 2
  int  i2;     // i2 has offset 3
  char c2;     // c2 has offset 5
  int  i3;     // i3 has offset 6
  char z1;     // z1 has offset 8
};

#pragma pack()    /* reset to default alignment */

struct s2  {
  int  i1;     // i1 has offset 0
  char c1;     // c1 has offset 2
  int  i2;     // i2 has offset 4
  char c2;     // c2 has offset 6
  int  i3;     // i3 has offset 8
  char z1;     // z1 has offset 10
};

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.