分享:C語言的三種不定引數,省略號用法
阿新 • • 發佈:2019-01-30
1. #define log(...) log2(__VA_ARGS__)
2. #deinfe log(fmt...) log2(fmt)
3. #define log(fmt,...) log2(fmt, ##__VA_ARGS__)
三者作用一樣,只是表示方法不一樣。
無論哪種情況,當用戶使用 log("xxxx") 時,將被替換為 log2("xxxx")
#include <stdio.h> #include <stdarg.h> void sum(char *msg, ...) { int total = 0; va_list p; int arg; va_start(p, msg); while ((arg = va_arg(p,int)) != 0) { total += arg; } printf(msg, total); va_end(p); } #define log(fmt...) printf(fmt) #define log1(fmt,...) printf(fmt, ##__VA_ARGS__) #define log2(...) printf(__VA_ARGS__) int main() { int a = 10; log("%d\n", a); log1("%d\n", a); log2("%d\n", a); sum("%d\n", 1,2,3,0); return 0; }