9Fermer11
BookeldOrLe 30/03/2006 à 15:50
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);
}