巨集定義 單行 多行表達

2021-09-29 06:31:15 字數 1077 閱讀 6321

define的單行定義

我們來看乙個例子,比較兩個數或者表示式大小,首先我們把它寫成巨集定義:

#define max( a, b) ( (a) > (b) (a) : (b) )

其次,把它用函式來實現:

int max( int a, int b)

return (a > b a : b)

很顯然,我們不會選擇用函式來完成這個任務,原因有兩個:首先,函式呼叫會帶來額外的開銷,它需要開闢一片棧空間,記錄返回位址,將形參壓棧,從函式返回還要釋放堆疊。這種開銷不僅會降低**效率,而且**量也會大大增加,而使用巨集定義則在**規模和速度方面都比函式更勝一籌;其次,函式的引數必須被宣告為一種特定的型別,所以它只能在型別合適的表示式上使用,我們如果要比較兩個浮點型的大小,就不得不再寫乙個專門針對浮點型的比較函式。反之,上面的那個巨集定義可以用於整形、長整形、單浮點型、雙浮點型以及其他任何可以用「>」操作符比較值大小的型別,也就是說,巨集是與型別無關的。

和使用函式相比,使用巨集的不利之處在於每次使用巨集時,乙份巨集定義**的拷貝都會插入到程式中。除非巨集非常短,否則使用巨集會大幅度增加程式的長度。

//巨集定義寫出swap(x,y)交換函式

#define swap(x, y)\

x = x + y;\

y = x - y;\

x = x - y;

zigbee裡多行define有如下例子

#define fillandsendtxoptions( transseq, addr, id, len, txo ) { \

afstatus_t stat;                                    \

zdp_txoptions = (txo);                              \

stat = fillandsend( (transseq), (addr), (id), (len) );          \

zdp_txoptions = af_tx_options_none;                 \

return stat;                                        \

C語言巨集定義函式的使用 定義單行和多行)

要寫好c語言,漂亮的巨集定義是非常重要的。巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。巨集定義中允許包含兩行以上...

define進行多行巨集定義

define進行多行巨集定義 define dorecovery led run 1 val1 off val2 off pump off val3 on compre on define str output format v0 s s s n printf str output format v...

c語言多行巨集定義及其注釋

早上在寫 時遇到這樣乙個問題 即如何在乙個擁有多行的巨集定義中做注釋?這裡把方法演化的過程貼出來,可能對某些朋友有些借鑑意義。巨集定義高深莫測,而且是比較細節的東西,詳細說明請參見 c參考手冊 之類的書籍。在我的 中,我大致要做這樣乙個簡單的事情 printf s s s n hello macro...