Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

7. An object shall have its stored value accessed only by an lvalue expression that has one of
the following types: (78)

  • a type compatible with the effective type of the object,
  • a qualified version of a type compatible with the effective type of the object,
  • a type that is the signed or unsigned type corresponding to the effective type of the
    object,
  • a type that is the signed or unsigned type corresponding to a qualified version of the
    effective type of the object,
  • an aggregate or union type that includes one of the aforementioned types among its
    members (including, recursively, a member of a subaggregate or contained union), or
  • a character type.

/(78) The intent of this list is to specify those circumstances in which an object may or may not be aliased./

These rules say that a program is invalid if you try to access a variable through a pointer of an incompatible type. This is happening in the following example, where a short is accessed through a pointer to an integer (the code assumes 16-bit shorts and 32-bit integers).

...