Kuinka käyttää muuttuva parametri toiminnot C ++

Valtaosa toiminnoista hyväksyä kiinteä määrä argumentteja.Jotkin sovellukset kuitenkin vaatia toimintoja hyväksyä muuttuvat parametrit.Tunnettu esimerkki on tulosta tehtävä C. Tällöin C ++ on tehokas ratkaisu, jonka avulla kääntäjä tulkita perustelut suorituksen aikana.Seuraavassa on opetusohjelma, joka osoittaa, miten toteuttaa tällaisia ​​toimintoja.

mitä tarvitset

  • Väliaika C ++
  • C ++ kääntäjä IDE, kutenMicrosoft Visual C ++

Ohjeet

  1. Lisää STDARG.H kirjaston tiedosto ohjelmaan.Siellä voit määrittää makroja.Ensimmäisellä rivillä tiedoston, aseta # include & lt;stdarg.h & gt ;.

  2. Käytä makrot va_arg, va_start ja v_end että yhteistyötä va_type vuonna stdarg.h.

  3. Luodaan vaihteleva tyypin va_list toimia luettelon merkki.

  4. Kirjaudu yksittäiset parametrit käyttämällä va_arg makro.Etsi tapa kertoa va_arg makro minkälaista väitteen haluat hakea toimittaa oikea määrä tavuja pinosta.

  5. Luo tulos vaiheesta 4 tyypin haluat sen olevan.

  6. Soita va_end makro lope

    ttaa käsittely muuttuvista tekijöistä.

  7. Katso alla oleva esimerkki, joka osoittaa vaiheet 2 6. Toiminto myprintf hyväksyy muotomerkkijonoa joka määrittää tyyppi ja sijainti argumentit.Seuraavat muotomerkkijonoa on luettelo argumentteja.Toiminto tulostaa argumentteja.Yksinkertaisuuden se voi vain prosessi int, float ja nieriää:

    // ilmoitus

    mitätön myprintf (char muoto, ...);

    // Definition

    mitätön myprintf (char
    muoto, ...) {

    va_list vl;

    int i;

    va_start (vl, args);

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

    unionin any_t {

    int i;

    float f;

    char c;

    } mitään;

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

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

    } else

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

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

    } else

    jos (args [i] == 'C') {

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

    }

    else {

    heittää SomeException;

    }

    va_end (vl);

    }

Resurssit

  • Cplusplus.com tarjoaa täydellisen C ++: opetusohjelmia.
  • Bruceeckel.com tarjoaa kaksi verkossa kirjoja C ++.
  • C / C ++ Käyttäjät lehti, suunnattu C ++ kehittäjät
494
0
1
C / C ++ Ohjelmointi