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

📄 port.h

📁 用C语言实现的字符型的菜单界面
💻 H
字号:
#if !defined( PORT_H)#define PORT_H/* beware - some preprocessors need # in first column *//* For port of UNIX C only */#define LITTLE_ENDIAN  typedef unsigned  char	u_1by_t;	/* unsigned  8 bit type */  typedef   signed  char	s_1by_t;	/*   signed  8 bit type */  typedef unsigned short	u_2by_t;	/* unsigned 16 bit type */  typedef   signed short	s_2by_t;	/*   signed 16 bit type */  typedef unsigned  long	u_4by_t;	/* unsigned 32 bit type */  typedef   signed  long	s_4by_t;	/*   signed 32 bit type */  typedef enum {bFALSE=0, bTRUE=1} boolean_t;	/* unsigned  1 bit type */  typedef boolean_t		bit;		/* unsigned  1 bit type */  typedef boolean_t		rboolean_t;	/* reentrant bit is illegal */  #define foreign(type)		type		/* interface to pascal	*/  #define regbank(bank)		/* */		/* select reg bank	*/  #define far			/* */		/* damn 8086 */  #define near			/* */		/* damn 8086 *//* make sure that an enum is 8 bit */#define enum8(name)		name##_et; typedef u_1by_t	name##_t#if 0  E.g.  typedef enum  {    visa,    pcbc,    amex  } enum8( host);  host_t	host;#endiftypedef enum{  positive	= 1,  negative	= 2} enum8(sign);/* common constants */#ifndef FALSE#define FALSE			bFALSE#define TRUE			bTRUE#endif#define false			FALSE#define true			TRUE#define equal			0		/* for strcmp() and memcmp() */#define INVALID_U1		0xff#define INVALID_S1		0x7f#define INVALID_U2		0xffff#define INVALID_S2		0x7fff#define INVALID_U4		0xffffffff#define INVALID_S4		0x7fffffff/* function specifiers */#define localfn			static		/* function is NOT exported */#define publicfn		/* */		/* function is exported */#define timer_task		reentrant#define FOREIGN(type)		foreign(type)/* common data types */typedef u_1by_t			*u_1by_ptr_t;typedef s_1by_t			*s_1by_ptr_t;typedef u_2by_t			*u_2by_ptr_t;typedef s_2by_t			*s_2by_ptr_t;typedef u_4by_t			*u_4by_ptr_t;typedef s_4by_t			*s_4by_ptr_t;typedef u_1by_ptr_t		str_t;typedef u_2by_t			err_t;typedef void			(*fn_ptr_t)( void);#define FILE_NAME_SIZE		256typedef u_1by_t			file_name_t[FILE_NAME_SIZE];/* handy functions */#define forever			for(;;)			/* loop forever	*/#define halt()			forever { }		/* do nothing forever */#define high_byte(x)		(((x) >> 8) & 0xff)	/* bits 8-15	*/#define low_byte(x)		((x) & 0xff)		/* bits 0-7	*/#define HIGH(x)			high_byte(x)		/* bits 8-15	*/#define LOW(x)			low_byte(x)		/* bits 0-7	*/#define high_nibble(x)		(((x) >> 4) & 0xf)	/* bits 4-7	*/#define low_nibble(x)		((x) & 0xf)		/* bits 0-3	*/#define and			&&#define or			||#define bit_and			&#define bit_or			|#define set_bit(x,b)		 (x) |=  (1U<<(b))	/* b=0(lsb), b=7(msb) */#define clear_bit(x,b)		 (x) &= ~(1U<<(b))#define flip_bit(x,b)		 (x) ^=  (1U<<(b))#define test_bit(x,b)		((x) &   (1U<<(b)))#define copy_bit(x,b,val)	{			\				  if(val)		\				  {			\				    set_bit(x,b);	\				  }			\				  else			\				  {			\				    clear_bit(x,b);	\				  }			\				}#define odd(x)			((x) & 0x01)#define even(x)			(!odd(x))/*  Adding to pointers of anything besides bytes does unexpected things.  So here is a nicer way to do it.*/#define byte_add(ptr,bytes)	(((u_1by_t *)(ptr))+(bytes))/*  Set a buffer to all 0.  "buffer" must a structure or array, not a pointer.*/#define memerase(buffer)	memset( &buffer, 0, sizeof(buffer))/*  Increment a variable but wrap around before it gets to max.*/#define mod_inc(var,max)	\    var++;			\    if( var >= max)		\    {				\      var = 0;			\    }/*  Decrement a variable but wrap around before it gets to max.*/#define mod_dec(var,max)	\    if( var == 0)		\    {				\      var = max - 1;		\    }				\    else			\    {				\      var--;			\    }/*  Rotate an 8 or 16 bit variable left (<<) or right (>>).  Make sure that p is an lvalue (preferably a simple variable).  (i.e.  x, s.x, *p, p->x, a[e], ...   not   i++, f(), I/O, a, p, s, &x, exp, ...)*/#define rol8( val)		\    if( val & 0x80)		\    {				\      val <<= 1;		\      val |=  1;		\    }				\    else			\    {				\      val <<= 1;		\    }#define ror8( val)		\    if( val & 0x01)		\    {				\      val >>= 1;		\      val |=  0x80;		\    }				\    else			\    {				\      val >>= 1;		\    }#define rol16( val)		\    if( val & 0x8000)		\    {				\      val <<= 1;		\      val |=  1;		\    }				\    else			\    {				\      val <<= 1;		\    }#define ror16( val)		\    if( val & 0x0001)		\    {				\      val >>= 1;		\      val |=  0x8000;		\    }				\    else			\    {				\      val >>= 1;		\    }/*  Exit codes should be defined as ExitOkay+x.  Eg  #define ExitQuit      ExitOkay+1      #define ExitAbnormal  ExitOkay+2*/#define ExitOkay	0#endif

⌨️ 快捷键说明

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