?? inttypes.h
字號:
// ISO C9x compliant inttypes.h for Microsoft Visual Studio// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006 Alexander Chemeris// // Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are met:// // 1. Redistributions of source code must retain the above copyright notice,// this list of conditions and the following disclaimer.// // 2. Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in the// documentation and/or other materials provided with the distribution.// // 3. The name of the author may be used to endorse or promote products// derived from this software without specific prior written permission.// // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.// ///////////////////////////////////////////////////////////////////////////////#ifndef _MSC_VER // [#error "Use this header only with Microsoft Visual C++ compilers!"#endif // _MSC_VER ]#ifndef _MSC_INTTYPES_H_ // [#define _MSC_INTTYPES_H_#if _MSC_VER > 1000#pragma once#endif#include <stdint.h>// 7.8 Format conversion of integer typestypedef struct { intmax_t quot; intmax_t rem;} imaxdiv_t;// 7.8.1 Macros for format specifiers// The fprintf macros for signed integers are:#define PRId8 "d"#define PRIi8 "i"#define PRIdLEAST8 "d"#define PRIiLEAST8 "i"#define PRIdFAST8 "d"#define PRIiFAST8 "i"#define PRId16 "hd"#define PRIi16 "hi"#define PRIdLEAST16 "hd"#define PRIiLEAST16 "hi"#define PRIdFAST16 "hd"#define PRIiFAST16 "hi"#define PRId32 "I32d"#define PRIi32 "I32i"#define PRIdLEAST32 "I32d"#define PRIiLEAST32 "I32i"#define PRIdFAST32 "I32d"#define PRIiFAST32 "I32i"#define PRId64 "I64d"#define PRIi64 "I64i"#define PRIdLEAST64 "I64d"#define PRIiLEAST64 "I64i"#define PRIdFAST64 "I64d"#define PRIiFAST64 "I64i"#define PRIdMAX "I64d"#define PRIiMAX "I64i"#define PRIdPTR "Id"#define PRIiPTR "Ii"// The fprintf macros for unsigned integers are:#define PRIo8 "o"#define PRIu8 "u"#define PRIx8 "x"#define PRIX8 "X"#define PRIoLEAST8 "o"#define PRIuLEAST8 "u"#define PRIxLEAST8 "x"#define PRIXLEAST8 "X"#define PRIoFAST8 "o"#define PRIuFAST8 "u"#define PRIxFAST8 "x"#define PRIXFAST8 "X"#define PRIo16 "ho"#define PRIu16 "hu"#define PRIx16 "hx"#define PRIX16 "hX"#define PRIoLEAST16 "ho"#define PRIuLEAST16 "hu"#define PRIxLEAST16 "hx"#define PRIXLEAST16 "hX"#define PRIoFAST16 "ho"#define PRIuFAST16 "hu"#define PRIxFAST16 "hx"#define PRIXFAST16 "hX"#define PRIo32 "I32o"#define PRIu32 "I32u"#define PRIx32 "I32x"#define PRIX32 "I32X"#define PRIoLEAST32 "I32o"#define PRIuLEAST32 "I32u"#define PRIxLEAST32 "I32x"#define PRIXLEAST32 "I32X"#define PRIoFAST32 "I32o"#define PRIuFAST32 "I32u"#define PRIxFAST32 "I32x"#define PRIXFAST32 "I32X"#define PRIo64 "I64o"#define PRIu64 "I64u"#define PRIx64 "I64x"#define PRIX64 "I64X"#define PRIoLEAST64 "I64o"#define PRIuLEAST64 "I64u"#define PRIxLEAST64 "I64x"#define PRIXLEAST64 "I64X"#define PRIoFAST64 "I64o"#define PRIuFAST64 "I64u"#define PRIxFAST64 "I64x"#define PRIXFAST64 "I64X"#define PRIoMAX "I64o"#define PRIuMAX "I64u"#define PRIxMAX "I64x"#define PRIXMAX "I64X"#define PRIoPTR "Io"#define PRIuPTR "Iu"#define PRIxPTR "Ix"#define PRIXPTR "IX"// The fscanf macros for signed integers are:#define SCNd8 "d"#define SCNi8 "i"#define SCNdLEAST8 "d"#define SCNiLEAST8 "i"#define SCNdFAST8 "d"#define SCNiFAST8 "i"#define SCNd16 "hd"#define SCNi16 "hi"#define SCNdLEAST16 "hd"#define SCNiLEAST16 "hi"#define SCNdFAST16 "hd"#define SCNiFAST16 "hi"#define SCNd32 "ld"#define SCNi32 "li"#define SCNdLEAST32 "ld"#define SCNiLEAST32 "li"#define SCNdFAST32 "ld"#define SCNiFAST32 "li"#define SCNd64 "I64d"#define SCNi64 "I64i"#define SCNdLEAST64 "I64d"#define SCNiLEAST64 "I64i"#define SCNdFAST64 "I64d"#define SCNiFAST64 "I64i"#define SCNdMAX "I64d"#define SCNiMAX "I64i"#ifdef _WIN64 // [# define SCNdPTR "I64d"# define SCNiPTR "I64i"#else // _WIN64 ][# define SCNdPTR "ld"# define SCNiPTR "li"#endif // _WIN64 ]// The fscanf macros for unsigned integers are:#define SCNo8 "o"#define SCNu8 "u"#define SCNx8 "x"#define SCNX8 "X"#define SCNoLEAST8 "o"#define SCNuLEAST8 "u"#define SCNxLEAST8 "x"#define SCNXLEAST8 "X"#define SCNoFAST8 "o"#define SCNuFAST8 "u"#define SCNxFAST8 "x"#define SCNXFAST8 "X"#define SCNo16 "ho"#define SCNu16 "hu"#define SCNx16 "hx"#define SCNX16 "hX"#define SCNoLEAST16 "ho"#define SCNuLEAST16 "hu"#define SCNxLEAST16 "hx"#define SCNXLEAST16 "hX"#define SCNoFAST16 "ho"#define SCNuFAST16 "hu"#define SCNxFAST16 "hx"#define SCNXFAST16 "hX"#define SCNo32 "lo"#define SCNu32 "lu"#define SCNx32 "lx"#define SCNX32 "lX"#define SCNoLEAST32 "lo"#define SCNuLEAST32 "lu"#define SCNxLEAST32 "lx"#define SCNXLEAST32 "lX"#define SCNoFAST32 "lo"#define SCNuFAST32 "lu"#define SCNxFAST32 "lx"#define SCNXFAST32 "lX"#define SCNo64 "I64o"#define SCNu64 "I64u"#define SCNx64 "I64x"#define SCNX64 "I64X"#define SCNoLEAST64 "I64o"#define SCNuLEAST64 "I64u"#define SCNxLEAST64 "I64x"#define SCNXLEAST64 "I64X"#define SCNoFAST64 "I64o"#define SCNuFAST64 "I64u"#define SCNxFAST64 "I64x"#define SCNXFAST64 "I64X"#define SCNoMAX "I64o"#define SCNuMAX "I64u"#define SCNxMAX "I64x"#define SCNXMAX "I64X"#ifdef _WIN64 // [# define SCNoPTR "I64o"# define SCNuPTR "I64u"# define SCNxPTR "I64x"# define SCNXPTR "I64X"#else // _WIN64 ][# define SCNoPTR "lo"# define SCNuPTR "lu"# define SCNxPTR "lx"# define SCNXPTR "lX"#endif // _WIN64 ]// 7.8.2 Functions for greatest-width integer types// 7.8.2.1 The imaxabs function#define imaxabs _abs64// 7.8.2.2 The imaxdiv function// This is modified version of div() function from Microsoft's div.c found// in %MSVC.NET%\crt\src\div.c#ifdef STATIC_IMAXDIV // [static#else // STATIC_IMAXDIV ][_inline#endif // STATIC_IMAXDIV ]imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom){ imaxdiv_t result; result.quot = numer / denom; result.rem = numer % denom; if (numer < 0 && result.rem > 0) { // did division wrong; must fix up ++result.quot; result.rem -= denom; } return result;}// 7.8.2.3 The strtoimax and strtoumax functions#define strtoimax _strtoi64#define strtoumax _strtoui64// 7.8.2.4 The wcstoimax and wcstoumax functions#define wcstoimax _wcstoi64#define wcstoumax _wcstoui64#endif // _MSC_INTTYPES_H_ ]
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -