見出し画像

C言語-#13.データ型の依存吸収のための定義

はお。

ちょちコードはC++。必要なデータ型を定義します。C++11対応。
ヘッダにしてインクルードするようにすればコンパイラ依存を軽減できます。

GCCとかは使ってないのでバージョン依存などあれば教えてくれると嬉しいです……

// RAND_MAX
#ifndef WIN32  // Windows は定義済みなので...
#ifndef RAND_MAX
#define RAND_MAX (0x7FFF)  //(0x7FFFFFFF)
#endif  // RAND_MAX
#endif  // WIN32

// データ型再定義
#if defined(__cplusplus) && !defined(_CSTDINT_)
#if __cplusplus <= 199711L
typedef char int8_t;
typedef short int16_t;
typedef long int32_t;
typedef long long int64_t;
typedef char int_fast8_t;
typedef short int_fast16_t;
typedef long int_fast32_t;
typedef long long int_fast64_t;
typedef char int_least8_t;
typedef short int_least16_t;
typedef long int_least32_t;
typedef long long int_least64_t;

//intmax_t	//maximum width integer type
//intptr_t	//integer type capable of holding a pointer

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
typedef unsigned long long uint64_t;
typedef unsigned char uint_fast8_t;
typedef unsigned short uint_fast16_t;
typedef unsigned long uint_fast32_t;
typedef unsigned long long uint_fast64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned long uint_least32_t;
typedef unsigned long long uint_least64_t;

//uintmax_t	//maximum width unsigned integer type
//uintptr_t	//unsigned integer type capable of holding a pointer

#define nullptr ((void *)0)

#else
// C++11 or later
#endif  //__cplusplus <= 199711L
#endif  //defined(__cplusplus)

#define int8_size sizeof(int8_t)
#define int16_size sizeof(int16_t)
#define int32_size sizeof(int32_t)
#define int64_size sizeof(int64_t)
#define uint8_size sizeof(uint8_t)
#define uint16_size sizeof(uint16_t)
#define uint32_size sizeof(uint32_t)
#define uint64_size sizeof(uint64_t)

#ifdef WIN32
#define FALSE 0
#define TRUE 1
#endif

#ifndef WIN32  // Windows は定義済みなので...
typedef long time_t;
typedef unsigned int size_t;
#endif  // WIN32


悉く書を信ずれば則ち書無きに如かず