mirror of
https://github.com/mirror/tinycc.git
synced 2025-01-03 04:30:08 +08:00
0bdbd49eac
avoid c++/c99 style comments in preprocessor directives avoid leadings whitespaces in preprocessor directives mention implemented variable length arrays in documentation fixed ambiguous option in texi2html call (Austin English)
298 lines
5.9 KiB
C
298 lines
5.9 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the w64 mingw-runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER within this package.
|
|
*/
|
|
/* 7.8 Format conversion of integer types <inttypes.h> */
|
|
|
|
#ifndef _INTTYPES_H_
|
|
#define _INTTYPES_H_
|
|
|
|
#include <_mingw.h>
|
|
#include <stdint.h>
|
|
#define __need_wchar_t
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct {
|
|
intmax_t quot;
|
|
intmax_t rem;
|
|
} imaxdiv_t;
|
|
|
|
#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
|
|
|
|
/* 7.8.1 Macros for format specifiers
|
|
*
|
|
* MS runtime does not yet understand C9x standard "ll"
|
|
* length specifier. It appears to treat "ll" as "l".
|
|
* The non-standard I64 length specifier causes warning in GCC,
|
|
* but understood by MS runtime functions.
|
|
*/
|
|
|
|
/* fprintf macros for signed types */
|
|
#define PRId8 "d"
|
|
#define PRId16 "d"
|
|
#define PRId32 "d"
|
|
#define PRId64 "I64d"
|
|
|
|
#define PRIdLEAST8 "d"
|
|
#define PRIdLEAST16 "d"
|
|
#define PRIdLEAST32 "d"
|
|
#define PRIdLEAST64 "I64d"
|
|
|
|
#define PRIdFAST8 "d"
|
|
#define PRIdFAST16 "d"
|
|
#define PRIdFAST32 "d"
|
|
#define PRIdFAST64 "I64d"
|
|
|
|
#define PRIdMAX "I64d"
|
|
|
|
#define PRIi8 "i"
|
|
#define PRIi16 "i"
|
|
#define PRIi32 "i"
|
|
#define PRIi64 "I64i"
|
|
|
|
#define PRIiLEAST8 "i"
|
|
#define PRIiLEAST16 "i"
|
|
#define PRIiLEAST32 "i"
|
|
#define PRIiLEAST64 "I64i"
|
|
|
|
#define PRIiFAST8 "i"
|
|
#define PRIiFAST16 "i"
|
|
#define PRIiFAST32 "i"
|
|
#define PRIiFAST64 "I64i"
|
|
|
|
#define PRIiMAX "I64i"
|
|
|
|
#define PRIo8 "o"
|
|
#define PRIo16 "o"
|
|
#define PRIo32 "o"
|
|
#define PRIo64 "I64o"
|
|
|
|
#define PRIoLEAST8 "o"
|
|
#define PRIoLEAST16 "o"
|
|
#define PRIoLEAST32 "o"
|
|
#define PRIoLEAST64 "I64o"
|
|
|
|
#define PRIoFAST8 "o"
|
|
#define PRIoFAST16 "o"
|
|
#define PRIoFAST32 "o"
|
|
#define PRIoFAST64 "I64o"
|
|
|
|
#define PRIoMAX "I64o"
|
|
|
|
/* fprintf macros for unsigned types */
|
|
#define PRIu8 "u"
|
|
#define PRIu16 "u"
|
|
#define PRIu32 "u"
|
|
#define PRIu64 "I64u"
|
|
|
|
|
|
#define PRIuLEAST8 "u"
|
|
#define PRIuLEAST16 "u"
|
|
#define PRIuLEAST32 "u"
|
|
#define PRIuLEAST64 "I64u"
|
|
|
|
#define PRIuFAST8 "u"
|
|
#define PRIuFAST16 "u"
|
|
#define PRIuFAST32 "u"
|
|
#define PRIuFAST64 "I64u"
|
|
|
|
#define PRIuMAX "I64u"
|
|
|
|
#define PRIx8 "x"
|
|
#define PRIx16 "x"
|
|
#define PRIx32 "x"
|
|
#define PRIx64 "I64x"
|
|
|
|
#define PRIxLEAST8 "x"
|
|
#define PRIxLEAST16 "x"
|
|
#define PRIxLEAST32 "x"
|
|
#define PRIxLEAST64 "I64x"
|
|
|
|
#define PRIxFAST8 "x"
|
|
#define PRIxFAST16 "x"
|
|
#define PRIxFAST32 "x"
|
|
#define PRIxFAST64 "I64x"
|
|
|
|
#define PRIxMAX "I64x"
|
|
|
|
#define PRIX8 "X"
|
|
#define PRIX16 "X"
|
|
#define PRIX32 "X"
|
|
#define PRIX64 "I64X"
|
|
|
|
#define PRIXLEAST8 "X"
|
|
#define PRIXLEAST16 "X"
|
|
#define PRIXLEAST32 "X"
|
|
#define PRIXLEAST64 "I64X"
|
|
|
|
#define PRIXFAST8 "X"
|
|
#define PRIXFAST16 "X"
|
|
#define PRIXFAST32 "X"
|
|
#define PRIXFAST64 "I64X"
|
|
|
|
#define PRIXMAX "I64X"
|
|
|
|
/*
|
|
* fscanf macros for signed int types
|
|
* NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t
|
|
* (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have
|
|
* no length identifiers
|
|
*/
|
|
|
|
#define SCNd16 "hd"
|
|
#define SCNd32 "d"
|
|
#define SCNd64 "I64d"
|
|
|
|
#define SCNdLEAST16 "hd"
|
|
#define SCNdLEAST32 "d"
|
|
#define SCNdLEAST64 "I64d"
|
|
|
|
#define SCNdFAST16 "hd"
|
|
#define SCNdFAST32 "d"
|
|
#define SCNdFAST64 "I64d"
|
|
|
|
#define SCNdMAX "I64d"
|
|
|
|
#define SCNi16 "hi"
|
|
#define SCNi32 "i"
|
|
#define SCNi64 "I64i"
|
|
|
|
#define SCNiLEAST16 "hi"
|
|
#define SCNiLEAST32 "i"
|
|
#define SCNiLEAST64 "I64i"
|
|
|
|
#define SCNiFAST16 "hi"
|
|
#define SCNiFAST32 "i"
|
|
#define SCNiFAST64 "I64i"
|
|
|
|
#define SCNiMAX "I64i"
|
|
|
|
#define SCNo16 "ho"
|
|
#define SCNo32 "o"
|
|
#define SCNo64 "I64o"
|
|
|
|
#define SCNoLEAST16 "ho"
|
|
#define SCNoLEAST32 "o"
|
|
#define SCNoLEAST64 "I64o"
|
|
|
|
#define SCNoFAST16 "ho"
|
|
#define SCNoFAST32 "o"
|
|
#define SCNoFAST64 "I64o"
|
|
|
|
#define SCNoMAX "I64o"
|
|
|
|
#define SCNx16 "hx"
|
|
#define SCNx32 "x"
|
|
#define SCNx64 "I64x"
|
|
|
|
#define SCNxLEAST16 "hx"
|
|
#define SCNxLEAST32 "x"
|
|
#define SCNxLEAST64 "I64x"
|
|
|
|
#define SCNxFAST16 "hx"
|
|
#define SCNxFAST32 "x"
|
|
#define SCNxFAST64 "I64x"
|
|
|
|
#define SCNxMAX "I64x"
|
|
|
|
/* fscanf macros for unsigned int types */
|
|
|
|
#define SCNu16 "hu"
|
|
#define SCNu32 "u"
|
|
#define SCNu64 "I64u"
|
|
|
|
#define SCNuLEAST16 "hu"
|
|
#define SCNuLEAST32 "u"
|
|
#define SCNuLEAST64 "I64u"
|
|
|
|
#define SCNuFAST16 "hu"
|
|
#define SCNuFAST32 "u"
|
|
#define SCNuFAST64 "I64u"
|
|
|
|
#define SCNuMAX "I64u"
|
|
|
|
#ifdef _WIN64
|
|
#define PRIdPTR "I64d"
|
|
#define PRIiPTR "I64i"
|
|
#define PRIoPTR "I64o"
|
|
#define PRIuPTR "I64u"
|
|
#define PRIxPTR "I64x"
|
|
#define PRIXPTR "I64X"
|
|
#define SCNdPTR "I64d"
|
|
#define SCNiPTR "I64i"
|
|
#define SCNoPTR "I64o"
|
|
#define SCNxPTR "I64x"
|
|
#define SCNuPTR "I64u"
|
|
#else
|
|
#define PRIdPTR "d"
|
|
#define PRIiPTR "i"
|
|
#define PRIoPTR "o"
|
|
#define PRIuPTR "u"
|
|
#define PRIxPTR "x"
|
|
#define PRIXPTR "X"
|
|
#define SCNdPTR "d"
|
|
#define SCNiPTR "i"
|
|
#define SCNoPTR "o"
|
|
#define SCNxPTR "x"
|
|
#define SCNuPTR "u"
|
|
#endif
|
|
|
|
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
/*
|
|
* no length modifier for char types prior to C9x
|
|
* MS runtime scanf appears to treat "hh" as "h"
|
|
*/
|
|
|
|
/* signed char */
|
|
#define SCNd8 "hhd"
|
|
#define SCNdLEAST8 "hhd"
|
|
#define SCNdFAST8 "hhd"
|
|
|
|
#define SCNi8 "hhi"
|
|
#define SCNiLEAST8 "hhi"
|
|
#define SCNiFAST8 "hhi"
|
|
|
|
#define SCNo8 "hho"
|
|
#define SCNoLEAST8 "hho"
|
|
#define SCNoFAST8 "hho"
|
|
|
|
#define SCNx8 "hhx"
|
|
#define SCNxLEAST8 "hhx"
|
|
#define SCNxFAST8 "hhx"
|
|
|
|
/* unsigned char */
|
|
#define SCNu8 "hhu"
|
|
#define SCNuLEAST8 "hhu"
|
|
#define SCNuFAST8 "hhu"
|
|
#endif /* __STDC_VERSION__ >= 199901 */
|
|
|
|
#endif /* !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) */
|
|
|
|
intmax_t __cdecl imaxabs (intmax_t j);
|
|
__CRT_INLINE intmax_t __cdecl imaxabs (intmax_t j)
|
|
{return (j >= 0 ? j : -j);}
|
|
imaxdiv_t __cdecl imaxdiv (intmax_t numer, intmax_t denom);
|
|
|
|
/* 7.8.2 Conversion functions for greatest-width integer types */
|
|
|
|
intmax_t __cdecl strtoimax (const char* __restrict__ nptr,
|
|
char** __restrict__ endptr, int base);
|
|
uintmax_t __cdecl strtoumax (const char* __restrict__ nptr,
|
|
char** __restrict__ endptr, int base);
|
|
|
|
intmax_t __cdecl wcstoimax (const wchar_t* __restrict__ nptr,
|
|
wchar_t** __restrict__ endptr, int base);
|
|
uintmax_t __cdecl wcstoumax (const wchar_t* __restrict__ nptr,
|
|
wchar_t** __restrict__ endptr, int base);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ndef _INTTYPES_H */
|