j'essaye de faire mieux, parce que là, on ne peut pas passer MAGIC comme paramètre...
#include <stdio.h>
#include <stdarg.h>
#define MAGIC 424242
void f1(int plop,...){
int args[3] = {42,51,1664}; /* default values */
va_list ap;
va_start(ap, plop);
for(int i = 0;i < 3;i++){
int tmp = va_arg(ap,int);
if(tmp == MAGIC)
break;
else
args[i] = tmp;
}
va_end(ap);
for(int i = 0;i < 3;i++){
printf("%d ",args[i]);
}
printf("\n");
}
#define f(...) f1(42, ##__VA_ARGS__ , MAGIC )
int main(int argc, char *argv[]) {
f(1);
f(1,2);
f(1,2,3);
}