$treeview $search $mathjax $extrastylesheet
avr-libc
2.0.0
$projectbrief
|
$projectbrief
|
$searchbox |
AVR Libc Home Page |
AVR Libc Development Pages |
||||
Main Page |
User Manual |
Library Reference |
FAQ |
Example Projects |
00001 /* Copyright (c) 2002,2004,2005 Marek Michalkiewicz 00002 Copyright (c) 2005, Carlos Lamas 00003 Copyright (c) 2005,2007 Joerg Wunsch 00004 Copyright (c) 2013 Embecosm 00005 All rights reserved. 00006 00007 Redistribution and use in source and binary forms, with or without 00008 modification, are permitted provided that the following conditions are met: 00009 00010 * Redistributions of source code must retain the above copyright 00011 notice, this list of conditions and the following disclaimer. 00012 00013 * Redistributions in binary form must reproduce the above copyright 00014 notice, this list of conditions and the following disclaimer in 00015 the documentation and/or other materials provided with the 00016 distribution. 00017 00018 * Neither the name of the copyright holders nor the names of 00019 contributors may be used to endorse or promote products derived 00020 from this software without specific prior written permission. 00021 00022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00025 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00026 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00027 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00028 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00029 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00030 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00031 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00032 POSSIBILITY OF SUCH DAMAGE. */ 00033 00034 /* $Id$ */ 00035 00036 /* 00037 * ISO/IEC 9899:1999 7.18 Integer types <stdint.h> 00038 */ 00039 00040 #ifndef __STDINT_H_ 00041 #define __STDINT_H_ 00042 00043 /** \file */ 00044 /** \defgroup avr_stdint <stdint.h>: Standard Integer Types 00045 \code #include <stdint.h> \endcode 00046 00047 Use [u]intN_t if you need exactly N bits. 00048 00049 Since these typedefs are mandated by the C99 standard, they are preferred 00050 over rolling your own typedefs. */ 00051 00052 #ifndef __DOXYGEN__ 00053 /* 00054 * __USING_MINT8 is defined to 1 if the -mint8 option is in effect. 00055 */ 00056 #if __INT_MAX__ == 127 00057 # define __USING_MINT8 1 00058 #else 00059 # define __USING_MINT8 0 00060 #endif 00061 00062 #endif /* !__DOXYGEN__ */ 00063 00064 /* Integer types */ 00065 00066 #if defined(__DOXYGEN__) 00067 00068 /* doxygen gets confused by the __attribute__ stuff */ 00069 00070 /** \name Exact-width integer types 00071 Integer types having exactly the specified width */ 00072 00073 /*@{*/ 00074 00075 /** \ingroup avr_stdint 00076 8-bit signed type. */ 00077 00078 typedef signed char int8_t; 00079 00080 /** \ingroup avr_stdint 00081 8-bit unsigned type. */ 00082 00083 typedef unsigned char uint8_t; 00084 00085 /** \ingroup avr_stdint 00086 16-bit signed type. */ 00087 00088 typedef signed int int16_t; 00089 00090 /** \ingroup avr_stdint 00091 16-bit unsigned type. */ 00092 00093 typedef unsigned int uint16_t; 00094 00095 /** \ingroup avr_stdint 00096 32-bit signed type. */ 00097 00098 typedef signed long int int32_t; 00099 00100 /** \ingroup avr_stdint 00101 32-bit unsigned type. */ 00102 00103 typedef unsigned long int uint32_t; 00104 00105 /** \ingroup avr_stdint 00106 64-bit signed type. 00107 \note This type is not available when the compiler 00108 option -mint8 is in effect. */ 00109 00110 typedef signed long long int int64_t; 00111 00112 /** \ingroup avr_stdint 00113 64-bit unsigned type. 00114 \note This type is not available when the compiler 00115 option -mint8 is in effect. */ 00116 00117 typedef unsigned long long int uint64_t; 00118 00119 /*@}*/ 00120 00121 #else /* !defined(__DOXYGEN__) */ 00122 00123 /* actual implementation goes here */ 00124 00125 typedef signed int int8_t __attribute__((__mode__(__QI__))); 00126 typedef unsigned int uint8_t __attribute__((__mode__(__QI__))); 00127 typedef signed int int16_t __attribute__ ((__mode__ (__HI__))); 00128 typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__))); 00129 typedef signed int int32_t __attribute__ ((__mode__ (__SI__))); 00130 typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__))); 00131 #if !__USING_MINT8 00132 typedef signed int int64_t __attribute__((__mode__(__DI__))); 00133 typedef unsigned int uint64_t __attribute__((__mode__(__DI__))); 00134 #endif 00135 00136 #endif /* defined(__DOXYGEN__) */ 00137 00138 /** \name Integer types capable of holding object pointers 00139 These allow you to declare variables of the same size as a pointer. */ 00140 00141 /*@{*/ 00142 00143 /** \ingroup avr_stdint 00144 Signed pointer compatible type. */ 00145 00146 typedef int16_t intptr_t; 00147 00148 /** \ingroup avr_stdint 00149 Unsigned pointer compatible type. */ 00150 00151 typedef uint16_t uintptr_t; 00152 00153 /*@}*/ 00154 00155 /** \name Minimum-width integer types 00156 Integer types having at least the specified width */ 00157 00158 /*@{*/ 00159 00160 /** \ingroup avr_stdint 00161 signed int with at least 8 bits. */ 00162 00163 typedef int8_t int_least8_t; 00164 00165 /** \ingroup avr_stdint 00166 unsigned int with at least 8 bits. */ 00167 00168 typedef uint8_t uint_least8_t; 00169 00170 /** \ingroup avr_stdint 00171 signed int with at least 16 bits. */ 00172 00173 typedef int16_t int_least16_t; 00174 00175 /** \ingroup avr_stdint 00176 unsigned int with at least 16 bits. */ 00177 00178 typedef uint16_t uint_least16_t; 00179 00180 /** \ingroup avr_stdint 00181 signed int with at least 32 bits. */ 00182 00183 typedef int32_t int_least32_t; 00184 00185 /** \ingroup avr_stdint 00186 unsigned int with at least 32 bits. */ 00187 00188 typedef uint32_t uint_least32_t; 00189 00190 #if !__USING_MINT8 || defined(__DOXYGEN__) 00191 /** \ingroup avr_stdint 00192 signed int with at least 64 bits. 00193 \note This type is not available when the compiler 00194 option -mint8 is in effect. */ 00195 00196 typedef int64_t int_least64_t; 00197 00198 /** \ingroup avr_stdint 00199 unsigned int with at least 64 bits. 00200 \note This type is not available when the compiler 00201 option -mint8 is in effect. */ 00202 00203 typedef uint64_t uint_least64_t; 00204 #endif 00205 00206 /*@}*/ 00207 00208 00209 /** \name Fastest minimum-width integer types 00210 Integer types being usually fastest having at least the specified width */ 00211 00212 /*@{*/ 00213 00214 /** \ingroup avr_stdint 00215 fastest signed int with at least 8 bits. */ 00216 00217 typedef int8_t int_fast8_t; 00218 00219 /** \ingroup avr_stdint 00220 fastest unsigned int with at least 8 bits. */ 00221 00222 typedef uint8_t uint_fast8_t; 00223 00224 /** \ingroup avr_stdint 00225 fastest signed int with at least 16 bits. */ 00226 00227 typedef int16_t int_fast16_t; 00228 00229 /** \ingroup avr_stdint 00230 fastest unsigned int with at least 16 bits. */ 00231 00232 typedef uint16_t uint_fast16_t; 00233 00234 /** \ingroup avr_stdint 00235 fastest signed int with at least 32 bits. */ 00236 00237 typedef int32_t int_fast32_t; 00238 00239 /** \ingroup avr_stdint 00240 fastest unsigned int with at least 32 bits. */ 00241 00242 typedef uint32_t uint_fast32_t; 00243 00244 #if !__USING_MINT8 || defined(__DOXYGEN__) 00245 /** \ingroup avr_stdint 00246 fastest signed int with at least 64 bits. 00247 \note This type is not available when the compiler 00248 option -mint8 is in effect. */ 00249 00250 typedef int64_t int_fast64_t; 00251 00252 /** \ingroup avr_stdint 00253 fastest unsigned int with at least 64 bits. 00254 \note This type is not available when the compiler 00255 option -mint8 is in effect. */ 00256 00257 typedef uint64_t uint_fast64_t; 00258 #endif 00259 00260 /*@}*/ 00261 00262 00263 /** \name Greatest-width integer types 00264 Types designating integer data capable of representing any value of 00265 any integer type in the corresponding signed or unsigned category */ 00266 00267 /*@{*/ 00268 00269 #if __USING_MINT8 00270 typedef int32_t intmax_t; 00271 00272 typedef uint32_t uintmax_t; 00273 #else /* !__USING_MINT8 */ 00274 /** \ingroup avr_stdint 00275 largest signed int available. */ 00276 00277 typedef int64_t intmax_t; 00278 00279 /** \ingroup avr_stdint 00280 largest unsigned int available. */ 00281 00282 typedef uint64_t uintmax_t; 00283 #endif /* __USING_MINT8 */ 00284 00285 /*@}*/ 00286 00287 #ifndef __DOXYGEN__ 00288 /* Helping macro */ 00289 #ifndef __CONCAT 00290 #define __CONCATenate(left, right) left ## right 00291 #define __CONCAT(left, right) __CONCATenate(left, right) 00292 #endif 00293 00294 #endif /* !__DOXYGEN__ */ 00295 00296 #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 00297 00298 /** \name Limits of specified-width integer types 00299 C++ implementations should define these macros only when 00300 __STDC_LIMIT_MACROS is defined before <stdint.h> is included */ 00301 00302 /*@{*/ 00303 00304 /** \ingroup avr_stdint 00305 largest positive value an int8_t can hold. */ 00306 00307 #define INT8_MAX 0x7f 00308 00309 /** \ingroup avr_stdint 00310 smallest negative value an int8_t can hold. */ 00311 00312 #define INT8_MIN (-INT8_MAX - 1) 00313 00314 #if __USING_MINT8 00315 00316 #define UINT8_MAX (__CONCAT(INT8_MAX, U) * 2U + 1U) 00317 00318 #define INT16_MAX 0x7fffL 00319 #define INT16_MIN (-INT16_MAX - 1L) 00320 #define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2UL + 1UL) 00321 00322 #define INT32_MAX 0x7fffffffLL 00323 #define INT32_MIN (-INT32_MAX - 1LL) 00324 #define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2ULL + 1ULL) 00325 00326 #else /* !__USING_MINT8 */ 00327 00328 /** \ingroup avr_stdint 00329 largest value an uint8_t can hold. */ 00330 00331 #define UINT8_MAX (INT8_MAX * 2 + 1) 00332 00333 /** \ingroup avr_stdint 00334 largest positive value an int16_t can hold. */ 00335 00336 #define INT16_MAX 0x7fff 00337 00338 /** \ingroup avr_stdint 00339 smallest negative value an int16_t can hold. */ 00340 00341 #define INT16_MIN (-INT16_MAX - 1) 00342 00343 /** \ingroup avr_stdint 00344 largest value an uint16_t can hold. */ 00345 00346 #define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2U + 1U) 00347 00348 /** \ingroup avr_stdint 00349 largest positive value an int32_t can hold. */ 00350 00351 #define INT32_MAX 0x7fffffffL 00352 00353 /** \ingroup avr_stdint 00354 smallest negative value an int32_t can hold. */ 00355 00356 #define INT32_MIN (-INT32_MAX - 1L) 00357 00358 /** \ingroup avr_stdint 00359 largest value an uint32_t can hold. */ 00360 00361 #define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2UL + 1UL) 00362 00363 #endif /* __USING_MINT8 */ 00364 00365 /** \ingroup avr_stdint 00366 largest positive value an int64_t can hold. */ 00367 00368 #define INT64_MAX 0x7fffffffffffffffLL 00369 00370 /** \ingroup avr_stdint 00371 smallest negative value an int64_t can hold. */ 00372 00373 #define INT64_MIN (-INT64_MAX - 1LL) 00374 00375 /** \ingroup avr_stdint 00376 largest value an uint64_t can hold. */ 00377 00378 #define UINT64_MAX (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL) 00379 00380 /*@}*/ 00381 00382 /** \name Limits of minimum-width integer types */ 00383 /*@{*/ 00384 00385 /** \ingroup avr_stdint 00386 largest positive value an int_least8_t can hold. */ 00387 00388 #define INT_LEAST8_MAX INT8_MAX 00389 00390 /** \ingroup avr_stdint 00391 smallest negative value an int_least8_t can hold. */ 00392 00393 #define INT_LEAST8_MIN INT8_MIN 00394 00395 /** \ingroup avr_stdint 00396 largest value an uint_least8_t can hold. */ 00397 00398 #define UINT_LEAST8_MAX UINT8_MAX 00399 00400 /** \ingroup avr_stdint 00401 largest positive value an int_least16_t can hold. */ 00402 00403 #define INT_LEAST16_MAX INT16_MAX 00404 00405 /** \ingroup avr_stdint 00406 smallest negative value an int_least16_t can hold. */ 00407 00408 #define INT_LEAST16_MIN INT16_MIN 00409 00410 /** \ingroup avr_stdint 00411 largest value an uint_least16_t can hold. */ 00412 00413 #define UINT_LEAST16_MAX UINT16_MAX 00414 00415 /** \ingroup avr_stdint 00416 largest positive value an int_least32_t can hold. */ 00417 00418 #define INT_LEAST32_MAX INT32_MAX 00419 00420 /** \ingroup avr_stdint 00421 smallest negative value an int_least32_t can hold. */ 00422 00423 #define INT_LEAST32_MIN INT32_MIN 00424 00425 /** \ingroup avr_stdint 00426 largest value an uint_least32_t can hold. */ 00427 00428 #define UINT_LEAST32_MAX UINT32_MAX 00429 00430 /** \ingroup avr_stdint 00431 largest positive value an int_least64_t can hold. */ 00432 00433 #define INT_LEAST64_MAX INT64_MAX 00434 00435 /** \ingroup avr_stdint 00436 smallest negative value an int_least64_t can hold. */ 00437 00438 #define INT_LEAST64_MIN INT64_MIN 00439 00440 /** \ingroup avr_stdint 00441 largest value an uint_least64_t can hold. */ 00442 00443 #define UINT_LEAST64_MAX UINT64_MAX 00444 00445 /*@}*/ 00446 00447 /** \name Limits of fastest minimum-width integer types */ 00448 00449 /*@{*/ 00450 00451 /** \ingroup avr_stdint 00452 largest positive value an int_fast8_t can hold. */ 00453 00454 #define INT_FAST8_MAX INT8_MAX 00455 00456 /** \ingroup avr_stdint 00457 smallest negative value an int_fast8_t can hold. */ 00458 00459 #define INT_FAST8_MIN INT8_MIN 00460 00461 /** \ingroup avr_stdint 00462 largest value an uint_fast8_t can hold. */ 00463 00464 #define UINT_FAST8_MAX UINT8_MAX 00465 00466 /** \ingroup avr_stdint 00467 largest positive value an int_fast16_t can hold. */ 00468 00469 #define INT_FAST16_MAX INT16_MAX 00470 00471 /** \ingroup avr_stdint 00472 smallest negative value an int_fast16_t can hold. */ 00473 00474 #define INT_FAST16_MIN INT16_MIN 00475 00476 /** \ingroup avr_stdint 00477 largest value an uint_fast16_t can hold. */ 00478 00479 #define UINT_FAST16_MAX UINT16_MAX 00480 00481 /** \ingroup avr_stdint 00482 largest positive value an int_fast32_t can hold. */ 00483 00484 #define INT_FAST32_MAX INT32_MAX 00485 00486 /** \ingroup avr_stdint 00487 smallest negative value an int_fast32_t can hold. */ 00488 00489 #define INT_FAST32_MIN INT32_MIN 00490 00491 /** \ingroup avr_stdint 00492 largest value an uint_fast32_t can hold. */ 00493 00494 #define UINT_FAST32_MAX UINT32_MAX 00495 00496 /** \ingroup avr_stdint 00497 largest positive value an int_fast64_t can hold. */ 00498 00499 #define INT_FAST64_MAX INT64_MAX 00500 00501 /** \ingroup avr_stdint 00502 smallest negative value an int_fast64_t can hold. */ 00503 00504 #define INT_FAST64_MIN INT64_MIN 00505 00506 /** \ingroup avr_stdint 00507 largest value an uint_fast64_t can hold. */ 00508 00509 #define UINT_FAST64_MAX UINT64_MAX 00510 00511 /*@}*/ 00512 00513 /** \name Limits of integer types capable of holding object pointers */ 00514 00515 /*@{*/ 00516 00517 /** \ingroup avr_stdint 00518 largest positive value an intptr_t can hold. */ 00519 00520 #define INTPTR_MAX INT16_MAX 00521 00522 /** \ingroup avr_stdint 00523 smallest negative value an intptr_t can hold. */ 00524 00525 #define INTPTR_MIN INT16_MIN 00526 00527 /** \ingroup avr_stdint 00528 largest value an uintptr_t can hold. */ 00529 00530 #define UINTPTR_MAX UINT16_MAX 00531 00532 /*@}*/ 00533 00534 /** \name Limits of greatest-width integer types */ 00535 00536 /*@{*/ 00537 00538 /** \ingroup avr_stdint 00539 largest positive value an intmax_t can hold. */ 00540 00541 #define INTMAX_MAX INT64_MAX 00542 00543 /** \ingroup avr_stdint 00544 smallest negative value an intmax_t can hold. */ 00545 00546 #define INTMAX_MIN INT64_MIN 00547 00548 /** \ingroup avr_stdint 00549 largest value an uintmax_t can hold. */ 00550 00551 #define UINTMAX_MAX UINT64_MAX 00552 00553 /*@}*/ 00554 00555 /** \name Limits of other integer types 00556 C++ implementations should define these macros only when 00557 __STDC_LIMIT_MACROS is defined before <stdint.h> is included */ 00558 00559 /*@{*/ 00560 00561 /** \ingroup avr_stdint 00562 largest positive value a ptrdiff_t can hold. */ 00563 00564 #define PTRDIFF_MAX INT16_MAX 00565 00566 /** \ingroup avr_stdint 00567 smallest negative value a ptrdiff_t can hold. */ 00568 00569 #define PTRDIFF_MIN INT16_MIN 00570 00571 00572 /* Limits of sig_atomic_t */ 00573 /* signal.h is currently not implemented (not avr/signal.h) */ 00574 00575 /** \ingroup avr_stdint 00576 largest positive value a sig_atomic_t can hold. */ 00577 00578 #define SIG_ATOMIC_MAX INT8_MAX 00579 00580 /** \ingroup avr_stdint 00581 smallest negative value a sig_atomic_t can hold. */ 00582 00583 #define SIG_ATOMIC_MIN INT8_MIN 00584 00585 00586 /** \ingroup avr_stdint 00587 largest value a size_t can hold. */ 00588 00589 #define SIZE_MAX UINT16_MAX 00590 00591 00592 /* Limits of wchar_t */ 00593 /* wchar.h is currently not implemented */ 00594 /* #define WCHAR_MAX */ 00595 /* #define WCHAR_MIN */ 00596 00597 00598 /* Limits of wint_t */ 00599 /* wchar.h is currently not implemented */ 00600 #ifndef WCHAR_MAX 00601 #define WCHAR_MAX __WCHAR_MAX__ 00602 #define WCHAR_MIN __WCHAR_MIN__ 00603 #endif 00604 #ifndef WINT_MAX 00605 #define WINT_MAX __WINT_MAX__ 00606 #define WINT_MIN __WINT_MIN__ 00607 #endif 00608 00609 00610 #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 00611 00612 #if (!defined __cplusplus || __cplusplus >= 201103L \ 00613 || defined __STDC_CONSTANT_MACROS) 00614 00615 /** \name Macros for integer constants 00616 C++ implementations should define these macros only when 00617 __STDC_CONSTANT_MACROS is defined before <stdint.h> is included. 00618 00619 These definitions are valid for integer constants without suffix and 00620 for macros defined as integer constant without suffix */ 00621 00622 /* The GNU C preprocessor defines special macros in the implementation 00623 namespace to allow a definition that works in #if expressions. */ 00624 #ifdef __INT8_C 00625 #define INT8_C(c) __INT8_C(c) 00626 #define INT16_C(c) __INT16_C(c) 00627 #define INT32_C(c) __INT32_C(c) 00628 #define INT64_C(c) __INT64_C(c) 00629 #define UINT8_C(c) __UINT8_C(c) 00630 #define UINT16_C(c) __UINT16_C(c) 00631 #define UINT32_C(c) __UINT32_C(c) 00632 #define UINT64_C(c) __UINT64_C(c) 00633 #define INTMAX_C(c) __INTMAX_C(c) 00634 #define UINTMAX_C(c) __UINTMAX_C(c) 00635 #else 00636 /** \ingroup avr_stdint 00637 define a constant of type int8_t */ 00638 00639 #define INT8_C(value) ((int8_t) value) 00640 00641 /** \ingroup avr_stdint 00642 define a constant of type uint8_t */ 00643 00644 #define UINT8_C(value) ((uint8_t) __CONCAT(value, U)) 00645 00646 #if __USING_MINT8 00647 00648 #define INT16_C(value) __CONCAT(value, L) 00649 #define UINT16_C(value) __CONCAT(value, UL) 00650 00651 #define INT32_C(value) ((int32_t) __CONCAT(value, LL)) 00652 #define UINT32_C(value) ((uint32_t) __CONCAT(value, ULL)) 00653 00654 #else /* !__USING_MINT8 */ 00655 00656 /** \ingroup avr_stdint 00657 define a constant of type int16_t */ 00658 00659 #define INT16_C(value) value 00660 00661 /** \ingroup avr_stdint 00662 define a constant of type uint16_t */ 00663 00664 #define UINT16_C(value) __CONCAT(value, U) 00665 00666 /** \ingroup avr_stdint 00667 define a constant of type int32_t */ 00668 00669 #define INT32_C(value) __CONCAT(value, L) 00670 00671 /** \ingroup avr_stdint 00672 define a constant of type uint32_t */ 00673 00674 #define UINT32_C(value) __CONCAT(value, UL) 00675 00676 #endif /* __USING_MINT8 */ 00677 00678 /** \ingroup avr_stdint 00679 define a constant of type int64_t */ 00680 00681 #define INT64_C(value) __CONCAT(value, LL) 00682 00683 /** \ingroup avr_stdint 00684 define a constant of type uint64_t */ 00685 00686 #define UINT64_C(value) __CONCAT(value, ULL) 00687 00688 /** \ingroup avr_stdint 00689 define a constant of type intmax_t */ 00690 00691 #define INTMAX_C(value) __CONCAT(value, LL) 00692 00693 /** \ingroup avr_stdint 00694 define a constant of type uintmax_t */ 00695 00696 #define UINTMAX_C(value) __CONCAT(value, ULL) 00697 00698 #endif /* !__INT8_C */ 00699 00700 /*@}*/ 00701 00702 #endif /* (!defined __cplusplus || __cplusplus >= 201103L \ 00703 || defined __STDC_CONSTANT_MACROS) */ 00704 00705 00706 #endif /* _STDINT_H_ */