شما باید خودتان در تابع یک قانونی وضع کنید تا ترتیب مشخص شود و معلوم شود در آرگومان چندم مثلا از نوع int هست، بعد به راحتی با استفاده از ماکرو va_arg می توانید با مشخص کردن نوع داده ای در آرگومان دومش معلوم کنید نوع داده ای شما چند بایت می باشد و خودش اشاره گری بر میگرداند از نوع داده ای مشخص شده خودمان.

در مثال زیر از عدد ورودی پارامتر اول برای تشخیص نوع داده ای استفاده می کنیم :

void YourFunction ( int i, ...)
{
va_list argptr;
va_start(argptr, i);

if ( i == 0 )
{
// i=0 --> int
int n1 = va_arg( argptr, int );

} else
{
// i=1 --> double
double n2 = va_arg( argptr, double );

} esle
{
char *n3 = va_arg( argptr, char*);
// i>1 --> char
}
}

int main()
{
YourFunction ( 0, 125 );
YourFunction ( 1, 125.674 );
YourFunction ( 6, 'A' );
// Do something
return 0;
}