C言語で可変個引数関数を作りたいのですが

int func(int a, ...){
 int b;
 va_list ap;
 va_start(ap, a);
 if((b = va_arg(ap, int)) == 0){
  b = 256;
 }
 va_end(ap);
  ・
  ・
  ・
}
のとき、
b == 0 ならその0は引数省略によって0になったのか引数に0が指定されたのか
調べる方法はありませんか?