C語言巨集定義常用函式

2021-10-06 17:26:34 字數 2074 閱讀 4433

#define  max( x, y )  ( ((x) > (y)) ? (x) : (y) )

#define min( x, y ) ( ((x) < (y)) ? (x) : (y) )

/*舉例,addr 為 0x83*/

addr =

min(

0x83

,0x84);

/*addr 等於 0x83*/

/*乙個陣列中的前兩個位元組轉化為乙個32位位元組*/

#define flipw_ray( ray ) ( (((uint32) (ray)[0]) * 256) + (ray)[1] )

uint32 temp;

uint8 buff[2]

=;temp =

flipw_ray

(buff)

;/*temp 等於 0xaabb*/

/*兩個位元組轉化為乙個32位位元組*/

#define flipw_var( varh,varl ) ( (((uint32) (varh)) * 256) + (varl) )

uint32 temp;

uint8 var_1 =

0xaa

,var_2 =

0xbb

;temp =

flipw_var

(var_1 ,var_2)

;/*temp 等於 0xaabb*/

/*把乙個32位位元組轉化為乙個陣列中的兩個位元組*/

#define flopw_ray( ray, val ) (ray)[0] = ((val) / 256); (ray)[1] = ((val) & 0xff)

uint32 addr =

0xabcd

;uint8 buff[2]

;flopw_ray

(buff,addr)

;/*buff[0] 為 0xab ,buff[1] 為 0xcd*/

/*把乙個32位位元組轉化為兩個8位變數值*/

#define flopw_var( varh, varl, val ) (varh) = ((val) / 256); (varl) = ((val) & 0xff)

uint8 aa =0;

uint8 bb =0;

uint32 addr =

0x3421

;flopw_var

(aa,bb,addr)

;/*aa 為 0x34 ,bb 為 0x21*/

#define rndn( x ,n)       ((((x) + (n - 1)) / (n) ) * (n))

uint8 aa =0;

aa =

rndn(7

,8);

/*aa 為 8*/

#define  upcase( ch ) ( ((ch) >= 'a' && (ch) <= 'z') ? ((ch) - 0x20) : (ch) )

uint8 aa =0;

aa =

upcase

('q');

/* aa 為 'q' 的大寫 『q' */

#define  arr_size( a )  ( sizeof( (a) ) / sizeof( (a[0]) ) )

uint8 aa =0;

uint8 buff[11]

;aa =

arr_size

(buff)

;/* aa 為 11*/

#define swap(x, y)             \

x = x + y;\

y = x - y;\

x = x - y;

uint8 aa =

0xcc

;uint8 bb =

0xbb

;swap

(aa,bb)

;/* aa 變為了 0xbb, bb 變為了 0xcc*/

C語言常用巨集定義

01 防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 02 重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。typedef unsigned char boolean boolean valu...

C語言常用巨集定義

c語言常用巨集定義 01 防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 02 重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。typedef?unsigned char?boolean ty...

C語言巨集定義和巨集定義函式

c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...