c99中規定巨集可以像函式一樣帶有可變引數,比如
#define log(format, ...) fprintf(stdout, format, __va_args__)
其中,...表示引數可變,__va_args__在預處理中為實際的引數集所替換
gcc中同時支援如下的形式
#define log(format, args...) fprintf(stdout, format, args)
其用法和上面的基本一致,只是引數符號有變化。
#define slog(level, format...) slog(level, __function__, __line__, format)
void slog(int level, const char *func, int lnum, char *format, ...)
if (level >= log_level)
}
可變引數巨集
在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadicmacros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 void printf con...
可變引數巨集
參考各可變引數的部落格,才寫出現在的部落格,有不準確之處,還望指出。1.先看些標準c中printf函式原型 標準c就支援可變引數巨集,也就意味著函式的引數是不固定的,例如printf 函式的原型為 int printf const char format,在gnu c中,巨集也可以接受可變數目的引數...
可變引數巨集
可變引數巨集 在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadic macros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 void pr...