__file__ __function__ __line__
__date__
__time__
#define max(x, y) (((x) < (y)) ? (y) : (x))
/*兩數取最大數*/
#define min(x, y) (((x) < (y)) ? (x) : (y))
/*兩數取最小數*/
#define ticks_subtract_absolute(cur, prev) (((cur) >= (prev)) ? ((cur)-(prev)) : ((0xffffffff-(prev))+(cur)+1))
//閏年的判斷 ,年份可以整除4並且不能整除100,或者可以整除400,則為閏年;
#define is_leap_year(y) (((((y) % 4) == 0) && (((y) % 100) != 0)) \
|| (((y) % 400) == 0))
/*判斷是否是閏年*/
#define bcd2hex(x) (((x) >> 4) * 10 + ((x) & 0x0f))
/*bcd碼轉數值, 20h -> 20*/
#define hex2bcd(x) (((x) % 10) + ((((x) / 10) % 10) << 4))
/*數值轉bcd碼, 20 -> 20h*/
/*字元是否在某個區間範圍內*/
#define in_range(c, lo, up) ((uint8)c >= lo && (uint8)c <= up)
#define isprint(c) in_range(c, 0x20, 0x7f)
/*十進位制內字元*/
#define isdigit(c) in_range(c, '0', '9')
/*十六進製制內字元*/
#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'a', 'f'))
/*是否是小寫*/
#define islower(c) in_range(c, 'a', 'z')
/*是否是空格*/
#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v')
/*是否為ascii碼*/
#define isascii(c) ((unsigned) (c) <= 0177)
#define msb(x) (((x) >> 8) & 0xff)
/* x佔2byte(如short)2byte的高位址的1byte */
#define lsb(x) ((x) & 0xff)
/* x佔2byte(如short)2byte的低位址的1byte*/
#define msw(x) (((x) >> 16) & 0xffff)
/* x佔4byte(如int) 4byte的高位址的2byte */
#define lsw(x) ((x) & 0xffff)
#define wordswap(x) (msw(x) | (lsw(x) << 16))
/* x佔4byte(如int) 低2位元組與高2位元組內容交換 */
#define llsb(x) ((x) & 0xff)
/*x佔4byte(如int) 取低位址1byte*/
#define lnlsb(x) (((x) >> 8) & 0xff)
#define lnmsb(x) (((x) >> 16) & 0xff)
#define lmsb(x) (((x) >> 24) & 0xff)
/*x佔4byte(如int) 4位元組逆序*/
#define longswap(x) ((llsb(x) << 24) \ |(
lnlsb
(x)<<
16) \
|(lnmsb
(x)<<
8) \
|(lmsb
(x))
)
/* 判斷某位是否為1 */
#define bit_is_1(x,y) (((x)>>(y))&0x01u)
#define setbits(x,y,n) (x) = (n) ? ((x)|(1 << (y))) : ((x) &(~(1 << (y))));
/* 給某位置反 */
#define bit_inverse(x,y) ((x)=(x)^(1<<(y)))
/* 位元組串中某bit值*/
#define bit_of_bytes(x, y) (bits(x[(y)/8], (y)%8))
/* 位元組串中設定某bit為0 */
#define setbitsto0_of_bytes(x, y) (x[(y)/8]) &= (~(1 << ((y)%8)))
/* 位元組串中設定某bit為1 */
#define setbitsto1_of_bytes(x, y) (x[(y)/8]) |= (1 << ((y)%8))
/* number of elements in an array */
#define array_size(a) (sizeof (a) / sizeof ((a)[0]))
/* byte offset of member in structure*/
#define moffset(structure, member) ((int) &(((structure *) 0) -> member))
/* size of a member of a structure */
#define member_size(structure, member) (sizeof (((structure *) 0) -> member))
/*向上對齊,~(align - 1)為對齊掩碼,例如align=8,~(align - 1) = ~7,
(~7)二進位制後三位為000,&(~(align - 1)) = &(~7),就是去掉餘數,使其能被8整除*/
#define align_up(x, align) (((int) (x) + (align - 1)) & ~(align - 1))
/*向下對齊*/
#define align_down(x, align) ((int)(x) & ~(align - 1))
/*是否對齊*/
#define aligned(x, align) (((int)(x) & (align - 1)) == 0)
C之帶參巨集定義
1.帶參巨集定義跟前面文章有所區別,不是簡單的數值或者字串替換,是要進行引數替換。2.本人理解,帶參巨集是很方便的,一些固定輸入和輸出咱們可以選擇帶參巨集,類似工程中多出要計算兩數相乘,這種情況我們就可以使用帶參巨集。define s a,b a b qdebug 2,3 6 define pi 3...
重讀C庫之巨集定義
1.如何編寫標頭檔案.h?1 23 ifndef func1 h func1 h 可小寫可大寫45 define func1 h func1 h67 8 9 endif 2.如何在c 檔案使用c庫?ifdef cpluscplus extern c endif 更複雜版本 3.undef作用?在後面...
C 巨集定義 巨集定義求面積
學過c語言的讀者,對巨集定義應該不陌生,同樣在c 中,也可以用巨集定義命令將乙個指定的識別符號來代表乙個字串,巨集定義的作用一般是用乙個短的名字代表乙個長的字串。一般形式為 define 識別符號 字串定義pi的符號常量 define pi 3.14在c 中還可以用 define命令定義帶引數的巨集...