Hvordan bruke Variable parameterfunksjoner i C ++

De fleste funksjoner godta et fast antall argumenter. Noen anvendelser krever imidlertid funksjoner for å godta variable parametre. Et velkjent eksempel er utskriftsfunksjonen i C. For slike tilfeller, C ++ og tilbyr en kraftig løsning som lar kompilatoren tyde argumentene under kjøring. Les videre for en tutorial som viser hvordan å implementere slike funksjoner.

Bruksanvisning

1 Tilsett STDARG.H bibliotekfilen inn i programmet. Det er der du definere makroer. På den første linjen i filen, setter #include <stdarg.h>.

2 Bruk makroer va_arg, va_start og v_end som samarbeider med va_type i stdarg.h.

3 Etablere en variabel av typen va_list å fungere som en liste markør.

4 Få tilgang til de enkelte parametre ved hjelp av va_arg makro. Finn en måte å fortelle va_arg makro hva slags argument du vil den skal hente å levere riktig antall bytes fra bunken.

5 Cast resultatet fra trinn 4 til den typen du vil den skal være.

6 Ring va_end makro å avslutte behandlingen av variable parametre.

7 Se på eksempelet nedenfor som viser trinn 2 til 6. Funksjon myprintf aksepterer et format streng som angir type og plassering av hvert argument. Etter formatstrengen er listen over argumenter. Funksjonen skriver argumentene. For enkelhets skyld kan det bare prosessen int, float og røye:

// erklæring

void myprintf (char format, ...);

// defintion

void myprintf (char format, ...) {

va_list vl;

int i;

va_start (VL args);

for (i = 0; args [i] = '\ 0';! ++ i) {

union any_t {

int i;

flyte f;

char c;

} Helst;

if (args [i] == 'i') {

any.i = va_arg( vl, int );<br>
printf( "%i\n", any.i );<br>

}ellers

if (args [i] == 'f') {

any.f = va_arg( vl, float );<br>
printf( "%f\n", any.f );<br>

}ellers

if (args [i] == 'c') {

any.c = va_arg( vl, char );<br>
printf( "%c\n", any.c );<br>

}

ellers{

kaste SomeException;

}

va_end (vl);

}