⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inttypes.h

📁 skyeye的开源代码
💻 H
字号:
#ifndef _SKYEYE_MIPS_INTTYPES_H_#define _SKYEYE_MIPS_INTTYPES_H_#include <stdlib.h>#include "../../../utils/config/skyeye_types.h"/* This header defines a set of minimum-width integer types. There is no need * for fixed-width types, although in many places it may improve performance. * There are four minimum-width signed types Int8, Int16, Int32 and Int64, and * four corresponding unsigned types UInt8, UInt16, UInt32 and UInt64. * Currently, two models are supported, ANSI (use ANSI restrictions on types * up to 32 bit and some unportable 64 bit type) and SIM64 (32 bit integers * and 64 bit longs). The first is currently supported only on GCC and TenDRA * as well as any C99-compatible compilers. Note that all eight types MUST be * distinct, as they are frequently used in overload resolution. */typedef signed char Int8;typedef unsigned char UInt8;typedef signed short Int16;typedef unsigned short UInt16;typedef signed int Int32;typedef unsigned int UInt32;typedef signed long long Int64;typedef unsigned long long UInt64;typedef UInt64  ClockValue;/* Useful multiplier suffixes */#define  KB 		1024#define  MB 		1024*KB#define  GB 		1024*MB#define  TB 		1024*GB/* Interfaces to ANSI # and ## preprocessing operators.  The STR2() and * GLUE2() differ from STR() and GLUE() in that the later macro-expand the * arguments before applying the operator. */#define STR2(x)		#x#define STR(x)		STR2(x)#define GLUE2(x,y)	x##y#define GLUE(x,y)	GLUE2(x, y)/* Two macros used to construct fixed-width constants from unsuffixed * literals. They serve two purposes: (1) to make it possible to define * portable 64 bit constants on 32 bit systems, and (2) to make huge constant * easier to read. */#define C32(a,b)							  \	((UInt32)((UInt32)GLUE2(0x,a) << 16 | (UInt32)GLUE2(0x,b)))#define C64(a,b,c,d)							  \	((UInt64)((UInt64)(a) << 48 | (UInt64)(b) << 32 | \		  (UInt64)(c) << 16 | (UInt64)(d)))#define is_power_of_two(x) \	({					\		typeof((x)) _x = (x);	\		((x) & -(x)) == (x);	\	})	#define round_down(x, size) (x & -(Int32)size)#define bitmask(n) ((UInt32)(1) << n) #define bitsmask(n, m) ((~(UInt32)0 ) >> (m) << (31 - (n) + (m)) >> (31 - (n)))#define bit(x, n) (((x) >> n) & 1)#define clear_bit(x, n) ((x) & ~bitmask(n))#define set_bit(x, n) ((x) | bitmask(n))#define bits(x, n, m) \	({		\	UInt32 y = (x);	\	y << (31 - (n)) >> (31 - (n) + (m)); \	})#define clear_bits(x, n, m) ((x) & ~bitsmask((n), (m)))#define set_bits(x, n, m) ((x) | bitsmask((n), (m)))#define copy_bits(x, y, n, m) (clear_bits((x), (n), (m)) | (bits((y), ((n) - (m)), (int)0) << m))#define zero_extend(x, n) (bits((x), (n) - 1, 0))#define MulResult(x, y) \{\	mstate->hi = (x);\	mstate->lo = (y);\}#define multiply(a, b) \{\	const int n = 8 * sizeof(typeof(a));\	UInt32 _x = (a), _y = (b);\	unsigned long long _z = _x * _y;\	MulResult(bits(_z, 2*n-1, n), bits(_z, n-1, 0));\}#define DivResult(x,y) \{\	mstate->lo = x;\	mstate->hi = y;\}#define divide(a, b) \{\    	const size_t n = 8 * sizeof(typeof(a));\    	if (n < sizeof(int)) {\		div_t r = div((int)(a), (int)(b));\		DivResult(r.quot, r.rem)\    	}\    	else if (n < sizeof(long)) {\		ldiv_t r = ldiv((long)(a), (long)(b));\		DivResult(r.quot, r.rem)\    	}\    	else {\		DivResult(a / b, a % b)\    	}\}#endif //end of _SKYEYE_MIPS_INTTYPES_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -