'#'和'##'是兩個預處理運算子,只能在預處理的過程中使用。在帶引數的巨集定義中,
帶引數的巨集定義也是可以使用可變引數的;
#define showlist(...) printf(# __va_args__)
其中...
表示使用可變引數,__va_args__
在於處理中被實際的引數集所替換。
#include#define str(s) # s //str 就是定義的巨集 ,# 運算子會將 s 變為字串的形式
int main(void)
#include#define together(x,y) x ## y
int main(void)
#include#define showlist(...) printf(# __va_args__)
int main(void)
#include#define printf(format,...) printf(# format,## __va_args__)
int main(void)
C語言巨集定義技巧
1,防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 2,重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移 植。typedef unsigned char boolean boolean value...
C語言 C語言之列舉定義和巨集定義的技巧1
例舉如下 typedef enum memp t 等同於 typedef enum memp t 解析 1 define mempool name,num,size,desc memp name,將mempool name,num,size,desc 代替為memp name 例如 memp std...
C語言巨集定義和巨集定義函式
c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...