diff options
Diffstat (limited to 'man0p/stdint.h.0p')
-rw-r--r-- | man0p/stdint.h.0p | 578 |
1 files changed, 578 insertions, 0 deletions
diff --git a/man0p/stdint.h.0p b/man0p/stdint.h.0p new file mode 100644 index 000000000..637b4009d --- /dev/null +++ b/man0p/stdint.h.0p @@ -0,0 +1,578 @@ +.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved +.TH "<stdint.h>" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" <stdint.h> +.SH NAME +stdint.h \- integer types +.SH SYNOPSIS +.LP +\fB#include <stdint.h>\fP +.SH DESCRIPTION +.LP +Some of the functionality described on this reference page extends +the ISO\ C standard. Applications shall define +the appropriate feature test macro (see the System Interfaces volume +of IEEE\ Std\ 1003.1-2001, Section 2.2, The Compilation Environment) +to enable the visibility of these symbols in this +header. +.LP +The \fI<stdint.h>\fP header shall declare sets of integer types having +specified widths, and shall define corresponding +sets of macros. It shall also define macros that specify limits of +integer types corresponding to types defined in other standard +headers. +.TP 7 +\fBNote:\fP +The "width" of an integer type is the number of bits used to store +its value in a pure binary system; the actual type may use +more bits than that (for example, a 28-bit type could be stored in +32 bits of actual storage). An \fIN\fP-bit signed type has +values in the range -2**\fIN\fP-1 or 1-2**\fIN\fP-1 to +2**\fIN\fP-1-1, while an \fIN\fP-bit unsigned type has values in the +range 0 to +2**\fIN\fP-1. +.sp +.LP +Types are defined in the following categories: +.IP " *" 3 +Integer types having certain exact widths +.LP +.IP " *" 3 +Integer types having at least certain specified widths +.LP +.IP " *" 3 +Fastest integer types having at least certain specified widths +.LP +.IP " *" 3 +Integer types wide enough to hold pointers to objects +.LP +.IP " *" 3 +Integer types having greatest width +.LP +.LP +(Some of these types may denote the same type.) +.LP +Corresponding macros specify limits of the declared types and construct +suitable constants. +.LP +For each type described herein that the implementation provides, the +\fI<stdint.h>\fP header shall declare that +\fBtypedef\fP name and define the associated macros. Conversely, for +each type described herein that the implementation does not +provide, the \fI<stdint.h>\fP header shall not declare that \fBtypedef\fP +name, nor shall it define the associated macros. +An implementation shall provide those types described as required, +but need not provide any of the others (described as +optional). +.SS Integer Types +.LP +When \fBtypedef\fP names differing only in the absence or presence +of the initial \fIu\fP are defined, they shall denote +corresponding signed and unsigned types as described in the ISO/IEC\ 9899:1999 +standard, Section 6.2.5; an implementation +providing one of these corresponding types shall also provide the +other. +.LP +In the following descriptions, the symbol \fIN\fP represents an unsigned +decimal integer with no leading zeros (for example, 8 +or 24, but not 04 or 048). +.IP " *" 3 +Exact-width integer types +.LP +The \fBtypedef\fP name \fBint\fP \fIN\fP \fB_t\fP designates a signed +integer type with width \fIN\fP, no padding bits, and +a two's-complement representation. Thus, \fBint8_t\fP denotes a signed +integer type with a width of exactly 8 bits. +.LP +The \fBtypedef\fP name \fBuint\fP \fIN\fP \fB_t\fP designates an unsigned +integer type with width \fIN\fP. Thus, +\fBuint24_t\fP denotes an unsigned integer type with a width of exactly +24 bits. +.LP +The +following types are required: +.LP +.sp +\fBint8_t\fP +.br +\fBint16_t\fP +.br +\fBint32_t\fP +.br +\fBuint8_t\fP +.br +\fBuint16_t\fP +.br +\fBuint32_t\fP +.br +.LP +If an implementation provides integer types with width 64 that meet +these requirements, then the following types are required: +\fBint64_t\fP \fBuint64_t\fP +.LP +In +particular, this will be the case if any of the following are true: +.RS +.IP " *" 3 +The implementation supports the _POSIX_V6_ILP32_OFFBIG programming +environment and the application is being built in the +_POSIX_V6_ILP32_OFFBIG programming environment (see the Shell and +Utilities volume of IEEE\ Std\ 1003.1-2001, \fIc99\fP, Programming +Environments). +.LP +.IP " *" 3 +The implementation supports the _POSIX_V6_LP64_OFF64 programming environment +and the application is being built in the +_POSIX_V6_LP64_OFF64 programming environment. +.LP +.IP " *" 3 +The implementation supports the _POSIX_V6_LPBIG_OFFBIG programming +environment and the application is being built in the +_POSIX_V6_LPBIG_OFFBIG programming environment. +.LP +.RE +.LP +All other types of this form are optional. +.LP +.IP " *" 3 +Minimum-width integer types +.LP +The \fBtypedef\fP name \fBint_least\fP \fIN\fP \fB_t\fP designates +a signed integer type with a width of at least \fIN\fP, +such that no signed integer type with lesser size has at least the +specified width. Thus, \fBint_least32_t\fP denotes a signed +integer type with a width of at least 32 bits. +.LP +The \fBtypedef\fP name \fBuint_least\fP \fIN\fP \fB_t\fP designates +an unsigned integer type with a width of at least +\fIN\fP, such that no unsigned integer type with lesser size has at +least the specified width. Thus, \fBuint_least16_t\fP denotes +an unsigned integer type with a width of at least 16 bits. +.LP +The following types are required: \fBint_least8_t\fP \fBint_least16_t\fP +\fBint_least32_t\fP \fBint_least64_t\fP +\fBuint_least8_t\fP \fBuint_least16_t\fP \fBuint_least32_t\fP \fBuint_least64_t\fP +.LP +All other types of this form are optional. +.LP +.IP " *" 3 +Fastest minimum-width integer types +.LP +Each of the following types designates an integer type that is usually +fastest to operate with among all integer types that have +at least the specified width. +.LP +The designated type is not guaranteed to be fastest for all purposes; +if the implementation has no clear grounds for choosing +one type over another, it will simply pick some integer type satisfying +the signedness and width requirements. +.LP +The \fBtypedef\fP name \fBint_fast\fP \fIN\fP \fB_t\fP designates +the fastest signed integer type with a width of at least +\fIN\fP. The \fBtypedef\fP name \fBuint_fast\fP \fIN\fP \fB_t\fP designates +the fastest unsigned integer type with a width of +at least \fIN\fP. +.LP +The following types are required: \fBint_fast8_t\fP \fBint_fast16_t\fP +\fBint_fast32_t\fP \fBint_fast64_t\fP +\fBuint_fast8_t\fP \fBuint_fast16_t\fP \fBuint_fast32_t\fP \fBuint_fast64_t\fP +.LP +All other types of this form are optional. +.LP +.IP " *" 3 +Integer types capable of holding object pointers +.LP +The following type designates a signed integer type with the property +that any valid pointer to \fBvoid\fP can be converted to +this type, then converted back to a pointer to \fBvoid\fP, and the +result will compare equal to the original pointer: +\fBintptr_t\fP +.LP +The following type designates an unsigned integer type with the property +that any valid pointer to \fBvoid\fP can be converted +to this type, then converted back to a pointer to \fBvoid\fP, and +the result will compare equal to the original pointer: +\fBuintptr_t\fP +.LP +On XSI-conformant systems, the \fBintptr_t\fP and \fBuintptr_t\fP +types are required; \ otherwise, they are optional. +.LP +.IP " *" 3 +Greatest-width integer types +.LP +The following type designates a signed integer type capable of representing +any value of any signed integer type: +\fBintmax_t\fP +.LP +The following type designates an unsigned integer type capable of +representing any value of any unsigned integer type: +\fBuintmax_t\fP +.LP +These types are required. +.LP +.TP 7 +\fBNote:\fP +Applications can test for optional types by using the corresponding +limit macro from Limits of +Specified-Width Integer Types . +.sp +.SS Limits of Specified-Width Integer Types +.LP +The following macros specify the minimum and maximum limits of the +types declared in the \fI<stdint.h>\fP header. Each +macro name corresponds to a similar type name in Integer Types . +.LP +Each instance of any defined macro shall be replaced by a constant +expression suitable for use in \fB#if\fP preprocessing +directives, and this expression shall have the same type as would +an expression that is an object of the corresponding type +converted according to the integer promotions. Its implementation-defined +value shall be equal to or greater in magnitude (absolute +value) than the corresponding value given below, with the same sign, +except where stated to be exactly the given value. +.IP " *" 3 +Limits of exact-width integer types +.RS +.IP " *" 3 +Minimum values of exact-width signed integer types: +.TP 7 +{INT\fIN\fP_MIN} +.RS +Exactly -(2 **N-1) +.RE +.sp +.LP +.IP " *" 3 +Maximum values of exact-width signed integer types: +.TP 7 +{INT\fIN\fP_MAX} +.RS +Exactly 2**N-1 -1 +.RE +.sp +.LP +.IP " *" 3 +Maximum values of exact-width unsigned integer types: +.TP 7 +{UINT\fIN\fP_MAX} +.RS +Exactly 2 **N -1 +.RE +.sp +.LP +.RE +.LP +.IP " *" 3 +Limits of minimum-width integer types +.RS +.IP " *" 3 +Minimum values of minimum-width signed integer types: +.TP 7 +{INT_LEAST\fIN\fP_MIN} +.RS +-(2 ** N-1 -1) +.RE +.sp +.LP +.IP " *" 3 +Maximum values of minimum-width signed integer types: +.TP 7 +{INT_LEAST\fIN\fP_MAX} +.RS +2 ** N-1 -1 +.RE +.sp +.LP +.IP " *" 3 +Maximum values of minimum-width unsigned integer types: +.TP 7 +{UINT_LEAST\fIN\fP_MAX} +.RS +2 ** N -1 +.RE +.sp +.LP +.RE +.LP +.IP " *" 3 +Limits of fastest minimum-width integer types +.RS +.IP " *" 3 +Minimum values of fastest minimum-width signed integer types: +.TP 7 +{INT_FAST\fIN\fP_MIN} +.RS +-(2 ** N-1 -1) +.RE +.sp +.LP +.IP " *" 3 +Maximum values of fastest minimum-width signed integer types: +.TP 7 +{INT_FAST\fIN\fP_MAX} +.RS +2 ** N-1 -1 +.RE +.sp +.LP +.IP " *" 3 +Maximum values of fastest minimum-width unsigned integer types: +.TP 7 +{UINT_FAST\fIN\fP_MAX} +.RS +2 ** N -1 +.RE +.sp +.LP +.RE +.LP +.IP " *" 3 +Limits of integer types capable of holding object pointers +.RS +.IP " *" 3 +Minimum value of pointer-holding signed integer type: +.TP 7 +{INTPTR_MIN} +.RS +-(2 ** 15 -1) +.RE +.sp +.LP +.IP " *" 3 +Maximum value of pointer-holding signed integer type: +.TP 7 +{INTPTR_MAX} +.RS +2 ** 15 -1 +.RE +.sp +.LP +.IP " *" 3 +Maximum value of pointer-holding unsigned integer type: +.TP 7 +{UINTPTR_MAX} +.RS +2 ** 16 -1 +.RE +.sp +.LP +.RE +.LP +.IP " *" 3 +Limits of greatest-width integer types +.RS +.IP " *" 3 +Minimum value of greatest-width signed integer type: +.TP 7 +{INTMAX_MIN} +.RS +-(2 ** 63 -1) +.RE +.sp +.LP +.IP " *" 3 +Maximum value of greatest-width signed integer type: +.TP 7 +{INTMAX_MAX} +.RS +2 ** 63 -1 +.RE +.sp +.LP +.IP " *" 3 +Maximum value of greatest-width unsigned integer type: +.TP 7 +{UINTMAX_MAX} +.RS +2 ** 64 -1 +.RE +.sp +.LP +.RE +.LP +.SS Limits of Other Integer Types +.LP +The following macros specify the minimum and maximum limits of integer +types corresponding to types defined in other standard +headers. +.LP +Each instance of these macros shall be replaced by a constant expression +suitable for use in \fB#if\fP preprocessing +directives, and this expression shall have the same type as would +an expression that is an object of the corresponding type +converted according to the integer promotions. Its implementation-defined +value shall be equal to or greater in magnitude (absolute +value) than the corresponding value given below, with the same sign. +.IP " *" 3 +Limits of \fBptrdiff_t\fP: +.TP 7 +{PTRDIFF_MIN} +.RS +-65535 +.RE +.TP 7 +{PTRDIFF_MAX} +.RS ++65535 +.RE +.sp +.LP +.IP " *" 3 +Limits of \fBsig_atomic_t\fP: +.TP 7 +{SIG_ATOMIC_MIN} +.RS +See below. +.RE +.TP 7 +{SIG_ATOMIC_MAX} +.RS +See below. +.RE +.sp +.LP +.IP " *" 3 +Limit of \fBsize_t\fP: +.TP 7 +{SIZE_MAX} +.RS +65535 +.RE +.sp +.LP +.IP " *" 3 +Limits of \fBwchar_t\fP: +.TP 7 +{WCHAR_MIN} +.RS +See below. +.RE +.TP 7 +{WCHAR_MAX} +.RS +See below. +.RE +.sp +.LP +.IP " *" 3 +Limits of \fBwint_t\fP: +.TP 7 +{WINT_MIN} +.RS +See below. +.RE +.TP 7 +{WINT_MAX} +.RS +See below. +.RE +.sp +.LP +.LP +If \fBsig_atomic_t\fP (see the \fI<signal.h>\fP header) is defined +as a signed +integer type, the value of {SIG_ATOMIC_MIN} shall be no greater than +-127 and the value of {SIG_ATOMIC_MAX} shall be no less than +127; otherwise, \fBsig_atomic_t\fP shall be defined as an unsigned +integer type, and the value of {SIG_ATOMIC_MIN} shall be 0 and +the value of {SIG_ATOMIC_MAX} shall be no less than 255. +.LP +If \fBwchar_t\fP (see the \fI<stddef.h>\fP header) is defined as a +signed +integer type, the value of {WCHAR_MIN} shall be no greater than -127 +and the value of {WCHAR_MAX} shall be no less than 127; +otherwise, \fBwchar_t\fP shall be defined as an unsigned integer type, +and the value of {WCHAR_MIN} shall be 0 and the value of +{WCHAR_MAX} shall be no less than 255. +.LP +If \fBwint_t\fP (see the \fI<wchar.h>\fP header) is defined as a signed +integer +type, the value of {WINT_MIN} shall be no greater than -32767 and +the value of {WINT_MAX} shall be no less than 32767; otherwise, +\fBwint_t\fP shall be defined as an unsigned integer type, and the +value of {WINT_MIN} shall be 0 and the value of {WINT_MAX} +shall be no less than 65535. +.SS Macros for Integer Constant Expressions +.LP +The following macros expand to integer constant expressions suitable +for initializing objects that have integer types +corresponding to types defined in the \fI<stdint.h>\fP header. Each +macro name corresponds to a similar type name listed +under \fIMinimum-width integer types\fP and \fIGreatest-width integer +types\fP. +.LP +Each invocation of one of these macros shall expand to an integer +constant expression suitable for use in \fB#if\fP +preprocessing directives. The type of the expression shall have the +same type as would an expression that is an object of the +corresponding type converted according to the integer promotions. +The value of the expression shall be that of the argument. +.LP +The argument in any instance of these macros shall be a decimal, octal, +or hexadecimal constant with a value that does not +exceed the limits for the corresponding type. +.IP " *" 3 +Macros for minimum-width integer constant expressions +.LP +The macro \fIINTN_C\fP( \fIvalue\fP) shall expand to an integer constant +expression corresponding to the type \fBint_least\fP +\fIN\fP \fB_t\fP. The macro \fIUINTN_C\fP( \fIvalue\fP) shall expand +to an integer constant expression corresponding to the +type \fBuint_least\fP \fIN\fP \fB_t\fP. For example, if \fBuint_least64_t\fP +is a name for the type \fBunsigned long long\fP, +then \fIUINT64_C\fP(0x123) might expand to the integer constant 0x123ULL. +.LP +.IP " *" 3 +Macros for greatest-width integer constant expressions +.LP +The following macro expands to an integer constant expression having +the value specified by its argument and the type +\fBintmax_t\fP: INTMAX_C(\fIvalue\fP) +.LP +The following macro expands to an integer constant expression having +the value specified by its argument and the type +\fBuintmax_t\fP: UINTMAX_C(\fIvalue\fP) +.LP +.LP +\fIThe following sections are informative.\fP +.SH APPLICATION USAGE +.LP +None. +.SH RATIONALE +.LP +The \fI<stdint.h>\fP header is a subset of the \fI<inttypes.h>\fP +header +more suitable for use in freestanding environments, which might not +support the formatted I/O functions. In some environments, if +the formatted conversion support is not wanted, using this header +instead of the \fI<inttypes.h>\fP header avoids defining such a large +number of macros. +.LP +As a consequence of adding \fBint8_t\fP, the following are true: +.IP " *" 3 +A byte is exactly 8 bits. +.LP +.IP " *" 3 +{CHAR_BIT} has the value 8, {SCHAR_MAX} has the value 127, {SCHAR_MIN} +has the value -127 or -128, and {UCHAR_MAX} has the value +255. +.LP +.SH FUTURE DIRECTIONS +.LP +\fBtypedef\fP names beginning with \fBint\fP or \fBuint\fP and ending +with _t may be added to the types defined in the +\fI<stdint.h>\fP header. Macro names beginning with INT or UINT and +ending with _MAX, _MIN, or _C may be added to the macros +defined in the \fI<stdint.h>\fP header. +.SH SEE ALSO +.LP +\fI<inttypes.h>\fP , \fI<signal.h>\fP , \fI<stddef.h>\fP , \fI<wchar.h>\fP +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. In the +event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . |