附录 1:类型别名和常量的宏
源码位置:include/my_inttypes.h(版本 = MySQL 8.0.37)
在 MySQL 源码中,大量使用了类型的自定义别名及常量的宏,在阅读源码时查找略显繁琐,共整理主要别名和宏如下:
类型别名
typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned long ulong; /* Short for unsigned long */
typedef unsigned char uchar; /* Short for unsigned char */
// Don't use these in new code; use [u]int64_t.
typedef long long int longlong;
typedef unsigned long long int ulonglong;
typedef int8_t int8;
typedef uint8_t uint8;
typedef int16_t int16;
typedef uint16_t uint16;
typedef int32_t int32;
typedef uint32_t uint32;
typedef int64_t int64;
typedef uint64_t uint64;
typedef intptr_t intptr;
常量的宏
#define MY_FILEPOS_ERROR (~(my_off_t)0)
#define INT_MIN64 (~0x7FFFFFFFFFFFFFFFLL)
#define INT_MAX64 0x7FFFFFFFFFFFFFFFLL
#define INT_MIN32 (~0x7FFFFFFFL)
#define INT_MAX32 0x7FFFFFFFL
#define UINT_MAX32 0xFFFFFFFFL
#define INT_MIN24 (~0x007FFFFF)
#define INT_MAX24 0x007FFFFF
#define UINT_MAX24 0x00FFFFFF
#define INT_MIN16 (~0x7FFF)
#define INT_MAX16 0x7FFF
#define UINT_MAX16 0xFFFF
#define INT_MIN8 (~0x7F)
#define INT_MAX8 0x7F
#define UINT_MAX8 0xFF
#define SIZE_T_MAX (~((size_t)0))
/* Length of decimal number represented by INT32. */
#define MY_INT32_NUM_DECIMAL_DIGITS 11U
/* Length of decimal number represented by INT64. */
#define MY_INT64_NUM_DECIMAL_DIGITS 21U
整型的 MyFlags
以及类型转换的宏:
typedef int myf; /* Type of MyFlags in my_funcs */
/* Macros for converting *constants* to the right type */
#define MYF(v) (myf)(v)