stdint-win.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _MSC_VER // [
00033 #error "Use this header only with Microsoft Visual C++ compilers!"
00034 #endif // _MSC_VER ]
00035
00036 #ifndef _MSC_STDINT_H_ // [
00037 #define _MSC_STDINT_H_
00038
00039 #if _MSC_VER > 1000
00040 #pragma once
00041 #endif
00042
00043 #include <limits.h>
00044
00045
00046
00047
00048
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052 # include <wchar.h>
00053 #ifdef __cplusplus
00054 }
00055 #endif
00056
00057
00058 #ifndef _W64
00059 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
00060 # define _W64 __w64
00061 # else
00062 # define _W64
00063 # endif
00064 #endif
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 #if (_MSC_VER < 1300)
00075 typedef signed char int8_t;
00076 typedef signed short int16_t;
00077 typedef signed int int32_t;
00078 typedef unsigned char uint8_t;
00079 typedef unsigned short uint16_t;
00080 typedef unsigned int uint32_t;
00081 #else
00082 typedef signed __int8 int8_t;
00083 typedef signed __int16 int16_t;
00084 typedef signed __int32 int32_t;
00085 typedef unsigned __int8 uint8_t;
00086 typedef unsigned __int16 uint16_t;
00087 typedef unsigned __int32 uint32_t;
00088 #endif
00089 typedef signed __int64 int64_t;
00090 typedef unsigned __int64 uint64_t;
00091
00092
00093
00094 typedef int8_t int_least8_t;
00095 typedef int16_t int_least16_t;
00096 typedef int32_t int_least32_t;
00097 typedef int64_t int_least64_t;
00098 typedef uint8_t uint_least8_t;
00099 typedef uint16_t uint_least16_t;
00100 typedef uint32_t uint_least32_t;
00101 typedef uint64_t uint_least64_t;
00102
00103
00104
00105
00106 #ifdef _WIN64 // [
00107 typedef signed __int64 intptr_t;
00108 typedef unsigned __int64 uintptr_t;
00109 #else // _WIN64 ][
00110 typedef _W64 signed int intptr_t;
00111 typedef _W64 unsigned int uintptr_t;
00112 #endif // _WIN64 ]
00113
00114
00115 typedef int64_t intmax_t;
00116 typedef uint64_t uintmax_t;
00117
00118
00119
00120
00121 #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
00122
00123
00124 #define INT8_MIN ((int8_t)_I8_MIN)
00125 #define INT8_MAX _I8_MAX
00126 #define INT16_MIN ((int16_t)_I16_MIN)
00127 #define INT16_MAX _I16_MAX
00128 #define INT32_MIN ((int32_t)_I32_MIN)
00129 #define INT32_MAX _I32_MAX
00130 #define INT64_MIN ((int64_t)_I64_MIN)
00131 #define INT64_MAX _I64_MAX
00132 #define UINT8_MAX _UI8_MAX
00133 #define UINT16_MAX _UI16_MAX
00134 #define UINT32_MAX _UI32_MAX
00135 #define UINT64_MAX _UI64_MAX
00136
00137
00138 #define INT_LEAST8_MIN INT8_MIN
00139 #define INT_LEAST8_MAX INT8_MAX
00140 #define INT_LEAST16_MIN INT16_MIN
00141 #define INT_LEAST16_MAX INT16_MAX
00142 #define INT_LEAST32_MIN INT32_MIN
00143 #define INT_LEAST32_MAX INT32_MAX
00144 #define INT_LEAST64_MIN INT64_MIN
00145 #define INT_LEAST64_MAX INT64_MAX
00146 #define UINT_LEAST8_MAX UINT8_MAX
00147 #define UINT_LEAST16_MAX UINT16_MAX
00148 #define UINT_LEAST32_MAX UINT32_MAX
00149 #define UINT_LEAST64_MAX UINT64_MAX
00150
00151
00152 #define INT_FAST8_MIN INT8_MIN
00153 #define INT_FAST8_MAX INT8_MAX
00154 #define INT_FAST16_MIN INT16_MIN
00155 #define INT_FAST16_MAX INT16_MAX
00156 #define INT_FAST32_MIN INT32_MIN
00157 #define INT_FAST32_MAX INT32_MAX
00158 #define INT_FAST64_MIN INT64_MIN
00159 #define INT_FAST64_MAX INT64_MAX
00160 #define UINT_FAST8_MAX UINT8_MAX
00161 #define UINT_FAST16_MAX UINT16_MAX
00162 #define UINT_FAST32_MAX UINT32_MAX
00163 #define UINT_FAST64_MAX UINT64_MAX
00164
00165
00166 #ifdef _WIN64 // [
00167 # define INTPTR_MIN INT64_MIN
00168 # define INTPTR_MAX INT64_MAX
00169 # define UINTPTR_MAX UINT64_MAX
00170 #else // _WIN64 ][
00171 # define INTPTR_MIN INT32_MIN
00172 # define INTPTR_MAX INT32_MAX
00173 # define UINTPTR_MAX UINT32_MAX
00174 #endif // _WIN64 ]
00175
00176
00177 #define INTMAX_MIN INT64_MIN
00178 #define INTMAX_MAX INT64_MAX
00179 #define UINTMAX_MAX UINT64_MAX
00180
00181
00182
00183 #ifdef _WIN64 // [
00184 # define PTRDIFF_MIN _I64_MIN
00185 # define PTRDIFF_MAX _I64_MAX
00186 #else // _WIN64 ][
00187 # define PTRDIFF_MIN _I32_MIN
00188 # define PTRDIFF_MAX _I32_MAX
00189 #endif // _WIN64 ]
00190
00191 #define SIG_ATOMIC_MIN INT_MIN
00192 #define SIG_ATOMIC_MAX INT_MAX
00193
00194 #ifndef SIZE_MAX // [
00195 # ifdef _WIN64 // [
00196 # define SIZE_MAX _UI64_MAX
00197 # else // _WIN64 ][
00198 # define SIZE_MAX _UI32_MAX
00199 # endif // _WIN64 ]
00200 #endif // SIZE_MAX ]
00201
00202
00203 #ifndef WCHAR_MIN // [
00204 # define WCHAR_MIN 0
00205 #endif // WCHAR_MIN ]
00206 #ifndef WCHAR_MAX // [
00207 # define WCHAR_MAX _UI16_MAX
00208 #endif // WCHAR_MAX ]
00209
00210 #define WINT_MIN 0
00211 #define WINT_MAX _UI16_MAX
00212
00213 #endif // __STDC_LIMIT_MACROS ]
00214
00215
00216
00217
00218 #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
00219
00220
00221
00222 #define INT8_C(val) val##i8
00223 #define INT16_C(val) val##i16
00224 #define INT32_C(val) val##i32
00225 #define INT64_C(val) val##i64
00226
00227 #define UINT8_C(val) val##ui8
00228 #define UINT16_C(val) val##ui16
00229 #define UINT32_C(val) val##ui32
00230 #define UINT64_C(val) val##ui64
00231
00232
00233 #define INTMAX_C INT64_C
00234 #define UINTMAX_C UINT64_C
00235
00236 #endif // __STDC_CONSTANT_MACROS ]
00237
00238
00239 #endif // _MSC_STDINT_H_ ]