開門見山,如下便是今天想随筆記錄的可變參數宏定義
其中的…就表示可傳入以逗号隔開的多參數。
舉例,
實際項目開發中,需要實作log列印的level控制,如下例子,隻有on為真時,才會列印log,否則為空,即不列印log。
#define LOG(on, Format...) \
if(on){ \
printf(Format) \
}else{ \
//Do nothing \
}
如有函數functionA() call到LOG函數,如下:
void functionA(void){
INT8 i=;
......
LOG(, "This is the first example\n"); //例子1
......
LOG(, "This is the second example i = %d\n", i); //例子2
}
此函數中,
例子1:在預編譯時,告訴編譯器Format展開為一個參數,即LOG傳入了兩個參數;
例子2:在預編譯時,告訴編譯器Format展開為兩個參數,即LOG傳入了三個參數。
如有錯誤,歡迎指正。