34. Common definitions
The following types and macros are defined in the standard header
are also defined in other headers, as noted in their respective subclauses.
The types are
which is the signed integer type of the result of subtracting two pointers;
which is the unsigned integer type of the result of the sizeof operator; and
which is an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales; the null character shall have the code value zero.
The macros are
which expands to an implementation-defined null pointer constant; and
which expands to an integer constant expression that has type
size_t, the value of
which is the offset in bytes, to the structure member (designated by member-designator),
from the beginning of its structure (designated by type). The type and member designator
shall be such that given
static type t;
then the expression
t.*member-designator*) evaluates to an address constant. (If the
specified member is a bit-field, the behavior is undefined.)
The types used for
ptrdiff_t should not have an integer conversion rank
greater than that of
signed long int unless the implementation supports objects
large enough to make this necessary.