Hoe te Variabele Parameter functies gebruiken in C ++

meeste functies aanvaarden een vast aantal argumenten.Sommige toepassingen vereisen echter functies om variabele parameters te accepteren.Een bekend voorbeeld is de printfunctie van C. Voor dergelijke gevallen, C ++ biedt een krachtige oplossing waarmee de compiler het ontcijferen van de argumenten tijdens runtime.Lees verder voor een tutorial die laat zien hoe deze functies te implementeren.

wat je nodig hebt

  • Intermediate C ++
  • C ++ compiler met IDE, zoalsMicrosoft Visual C ++

instructies

  1. Voeg de stdarg.h bibliotheek bestand in uw programma.Dat is waar je de macro's te definiëren.Op de eerste regel van het bestand, plaatst #include & lt;stdarg.h & gt ;.

  2. Gebruik de macro's va_arg, va_start en v_end die samenwerken met de va_type in stdarg.h.

  3. Instelling van een variabele van het type va_list om te functioneren als een lijst marker.

  4. Toegang tot de individuele parameters met behulp van de va_arg macro.Vind een manier om de va_arg macro welk

    type argument dat u het wilt halen om het juiste aantal bytes leveren van de stapel te vertellen.

  5. Werp het resultaat van stap 4 tot het type dat u wilt dat het is.

  6. Bel de va_end macro met de verwerking van variabele parameters te beëindigen.

  7. Kijk naar het onderstaande voorbeeld dat aantoont stappen 2 tot 6. Functie myprintf accepteert een format string die het type en de positie van elk argument geeft.Naar aanleiding van de format string is de lijst met argumenten.De functie drukt de argumenten.Voor de eenvoud kan het alleen proces int, float en char:

    // verklaring

    leegte myprintf (char formaat, ...);

    // defintion

    leegte myprintf (char
    formaat, ...) {

    va_list vl;

    int i;

    va_start (vl, args);

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

    unie any_t {

    int i;

    float f;

    char c;

    } elke;

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

    any.i = va_arg (vl, int); & lt; br & gt;
    printf ("% i \ n", any.i); & lt; br & gt;

    } else

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

    any.f = va_arg (vl, float); & lt; br & gt;
    printf ("% f \ n", any.f); & lt; br & gt;

    } else

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

    any.c = va_arg (vl, char); & lt; br & gt;
    printf ("% c \ n", any.c); & lt; br & gt;

    }

    else {

    gooien SomeException;

    }

    va_end (vl);

    }

Resources

  • Cplusplus.com biedt complete C ++ tutorials.
  • Bruceeckel.com biedt twee online boeken in C ++.
  • De C / C ++ Users Journal, gericht op C ++ ontwikkelaars
929
0
1
C / C ++ Programming