stddef.h — standard type definitions
#include <stddef.h>
[CX]The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard.
The <stddef.h> header shall define the following macros:
- NULL
- Null pointer constant. [CX]
The macro shall expand to an integer constant expression with the value 0 cast to type void *. Additionally, any pointer object whose representation has all bits set to zero, perhaps by memset() to 0 or by calloc(), shall be treated as a null pointer.
- offsetof(type, member-designator)
Integer constant expression of type size_t, the value of which is the offset in bytes to the structure member (member-designator), from the beginning of its structure (type).The <stddef.h> header shall define the following types:
- max_align_t
- Object type whose alignment is the greatest fundamental alignment.
- ptrdiff_t
- Signed integer type of the result of subtracting two pointers.
- wchar_t
- 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. Each member of the basic character set shall have a code value equal to its value when used as the lone character in an integer character constant if an implementation does not define __STDC_MB_MIGHT_NEQ_WC__.
- size_t
- Unsigned integer type of the result of the sizeof operator.
The implementation shall support one or more programming environments in which the widths of ptrdiff_t, size_t, and wchar_t are no greater than the width of type long. The names of these programming environments can be obtained using the confstr() function or the getconf utility.
None.
The ISO C standard does not require the NULL macro to include the cast to type void * and specifies that the NULL macro be implementation-defined. POSIX.1-2024 requires the cast and therefore need not be implementation-defined.
Likewise, the ISO C standard does not require a pointer object whose representation has all bits set to zero to be treated as a null pointer. While there has been historical hardware where non-zero patterns were more efficient for use as the canonical null pointer, no known POSIX system has tried to target such hardware. However, though unlikely in modern hardware, a compiler is still allowed to treat more than one bit pattern as a representation of the null pointer (all such patterns will compare equal to one another, and unequal to any pointer to any other object). Thus, applications should not assume that a pointer object with non-zero representation is not a null pointer.
None.
XSH confstr
XCU getconf
First released in Issue 4. Derived from the ANSI C standard.
This reference page is clarified with respect to macros and symbolic constants.
SD5-XBD-ERN-53 is applied, updating the definition of wchar_t to align with ISO/IEC 9899:1999 standard, Technical Corrigendum 3.
Austin Group Defect 940 is applied, adding a requirement that any pointer object whose representation has all bits set to zero is interpreted as a null pointer.
Austin Group Defect 1302 is applied, adding max_align_t.
return to top of page