#include <stdio.h>
#include <stdarg.h>
void f (int w,...)
{
//
// Dichiara le variabili che servono a contenere
// gli argomenti privi di parametri formali.
//
long double x;
long long int y;
int z;
//
// Dichiara il puntatore ai parametri.
//
va_list ap;
//
// Posiziona il puntatore dopo il primo parametro,
// ovvero dopo l'ultimo parametro dichiarato
// esplicitamente.
//
//
// Estrapola il secondo argomento della chiamata (portando
// avanti il puntatore di conseguenza.
//
//
// Mostra il valore del primo e del secondo argomento
// ottenuto dalla chiamata della funzione.
//
//
// Estrapola il terzo argomento.
//
y
= va_arg (ap
, long long int); //
// Mostra il terzo argomento.
//
//
// Estrapola il quarto argomento.
//
//
// Mostra il quarto e ultimo argomento.
//
//
// Conclude la scansione degli argomenti.
//
//
return;
}
int main (int argc, char *argv[])
{
f (10, (long double) 12.34, (long long int) 13, 14);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KCnZvaWQgZiAoaW50IHcsLi4uKQp7CiAgLy8KICAvLyBEaWNoaWFyYSBsZSB2YXJpYWJpbGkgY2hlIHNlcnZvbm8gYSBjb250ZW5lcmUKICAvLyBnbGkgYXJnb21lbnRpIHByaXZpIGRpIHBhcmFtZXRyaSBmb3JtYWxpLgogIC8vCiAgbG9uZyBkb3VibGUgeDsKICBsb25nIGxvbmcgaW50IHk7CiAgaW50IHo7CiAgLy8KICAvLyBEaWNoaWFyYSBpbCBwdW50YXRvcmUgYWkgcGFyYW1ldHJpLgogIC8vCiAgdmFfbGlzdCBhcDsKICAvLwogIC8vIFBvc2l6aW9uYSBpbCBwdW50YXRvcmUgZG9wbyBpbCBwcmltbyBwYXJhbWV0cm8sCiAgLy8gb3Z2ZXJvIGRvcG8gbCd1bHRpbW8gcGFyYW1ldHJvIGRpY2hpYXJhdG8KICAvLyBlc3BsaWNpdGFtZW50ZS4KICAvLwogIHZhX3N0YXJ0IChhcCwgdyk7CiAgLy8KICAvLyBFc3RyYXBvbGEgaWwgc2Vjb25kbyBhcmdvbWVudG8gZGVsbGEgY2hpYW1hdGEgKHBvcnRhbmRvCiAgLy8gYXZhbnRpIGlsIHB1bnRhdG9yZSBkaSBjb25zZWd1ZW56YS4KICAvLwogIHggPSB2YV9hcmcgKGFwLCBsb25nIGRvdWJsZSk7CiAgLy8KICAvLyBNb3N0cmEgaWwgdmFsb3JlIGRlbCBwcmltbyBlIGRlbCBzZWNvbmRvIGFyZ29tZW50bwogIC8vIG90dGVudXRvIGRhbGxhIGNoaWFtYXRhIGRlbGxhIGZ1bnppb25lLgogIC8vCiAgcHJpbnRmICgidyA9ICVpOyAiLCB3KTsKICBwcmludGYgKCJ4ID0gJUxmOyAiLCB4KTsKICAvLwogIC8vIEVzdHJhcG9sYSBpbCB0ZXJ6byBhcmdvbWVudG8uCiAgLy8KICB5ID0gdmFfYXJnIChhcCwgbG9uZyBsb25nIGludCk7CiAgLy8KICAvLyBNb3N0cmEgaWwgdGVyem8gYXJnb21lbnRvLgogIC8vCiAgcHJpbnRmICgieSA9ICVsbGk7ICIsIHkpOwogIC8vCiAgLy8gRXN0cmFwb2xhIGlsIHF1YXJ0byBhcmdvbWVudG8uCiAgLy8KICB6ID0gdmFfYXJnIChhcCwgaW50KTsKICAvLwogIC8vIE1vc3RyYSBpbCBxdWFydG8gZSB1bHRpbW8gYXJnb21lbnRvLgogIC8vCiAgcHJpbnRmICgieiA9ICVpXG4iLCB6KTsKICAvLwogIC8vIENvbmNsdWRlIGxhIHNjYW5zaW9uZSBkZWdsaSBhcmdvbWVudGkuCiAgLy8KICB2YV9lbmQgKGFwKTsKICAvLwogIHJldHVybjsKfQoKaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICBmICgxMCwgKGxvbmcgZG91YmxlKSAxMi4zNCwgKGxvbmcgbG9uZyBpbnQpIDEzLCAxNCk7CiAgcmV0dXJuIDA7Cn0=