在主函式內使用巨集定義

2021-10-19 10:42:01 字數 1476 閱讀 4381

之前習慣於在主函式外面使用巨集定義,但實際上主函式內也可使用,例:

#include

#include

#include

#include

#include

#include

intmain()

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

char

*const end_ptr=

&g[8];

char

*tmp_ptr=g;

char

*tresh=

min(end_ptr,tmp_ptr+12)

;printf

("%ld\n%ld\n"

,(intptr_t)

(int*)

(end_ptr)

,(intptr_t )

(int*)

(tmp_ptr+12)

);printf

("%c\n"

,*tresh)

;return0;

}

執行結果為

140730577384423

140730577384427

4

#include

#include

#include

#include

#include

#include

intmain()

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

char

*const end_ptr=

&g[8];

char

*tmp_ptr=g;

char

*tresh=

min(end_ptr,tmp_ptr)

;printf

("%ld\n%ld\n"

,(intptr_t)

(int*)

(end_ptr)

,(intptr_t )

(int*)

(tmp_ptr));

printf

("%c\n"

,*tresh)

;return0;

}

執行結果:

140737052257751

140737052257743

9

**注意:

printf

("%ld\n%ld\n"

,(intptr_t)

(int*)

(end_ptr)

,(intptr_t )

(int*)

(tmp_ptr)

);

用於輸出指標end_ptr和tmp_ptr的值,也就是位址;**

巨集定義函式使用

開闢一片棧空間 記錄返回位址 將形參壓棧,從函式返回還要釋放堆疊。函式的引數必須被宣告為一種特定的型別,所以它只能在型別合適的表示式上使用,我們如果要比較兩個浮點型的大小,就不得不再寫乙個專門針對浮點型的比較函式。反之,上面的那個巨集定義可以用於整形 長整形 單浮點型 雙浮點型以及其他任何可以用 操...

巨集定義函式

巨集定義也可以成為 巨集代換 c語言提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。巨集定義和操作符的區別是 巨集定義是替換,不做計算,也不做表示式求解。c語言編譯工具會在預處理階段,將巨集名替換為字串。所以,我們可以把巨集定義理解為,發生在程式編譯之前的字串替換操作...

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

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