可變引數巨集

2021-07-24 23:36:49 字數 580 閱讀 6645

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...