Kuidas kasutada vahelduva Parameeter funktsioonid C ++

Enamik funktsioone nõus kindla arvu argumente.Mõned rakendused siiski nõuda ülesannete aktsepteerima muutuvad parameetrid.Tuntud näide on print funktsiooni C. Sellisel juhul C ++ pakub võimas lahendus, mis võimaldab koostaja dešifreerida argumendid töötamise ajal.Loe edasi juhendaja, mis näitab, kuidas rakendada selliseid ülesandeid.

, mida te vajate

  • Intermediate C ++
  • C ++ kompilaator IDE, naguMicrosoft Visual C ++

juhised

  1. Lisa STDARG.H raamatukogu fail oma programmi.See, kui sa defineerid makrosid.Esimesel real faili, sisesta #include & lt;stdarg.h & gt ;.

  2. kasutamine makrosid va_arg, va_start ja v_end et koostööd va_type in stdarg.h.

  3. Luua tüüpi muutuja va_list toimida loendilooja.

  4. Access üksikute parameetrite abil va_arg makro.Leia viis öelda va_arg makro, millist tüüpi argument soovite laadida andma õige baitide arv pakis.

  5. valatud tulemus alates 4. tüübi sa tahad seda.

  6. Helista va_end makro lõpetada töötlemine muutuvate parameetrite.

  7. Vaata näidet allpool, mis näitab, punkte 2 kuni 6. Funktsioon myprintf aktsepteerib stringi, mis määrab liik ja asukoht iga argument.Pärast stringi argumentide loetelus.Funktsioon prindib argumente.Lihtsuse see saab olla ainult protsessi int, float ja char:

    // deklaratsiooni

    tühine myprintf (char formaadis, ...);

    // Defintion

    tühine myprintf (char
    formaadis, ...) {

    va_list vl;

    int i;

    va_start (vl, args);

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

    Liidu any_t {

    int i;

    float f;

    char c;

    } tahes;

    kui (args [i] == 'i ") {

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

    } else

    kui (args [i] == "f") {

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

    } else

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

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

    }

    else {

    visata SomeException;

    }

    va_end (vl);

    }

Resources

  • Cplusplus.com pakub täielikku C ++ õpetused.
  • Bruceeckel.com pakub kahte Internetis raamatuid C ++.
  • C / C ++ Kasutajad Journal, suunatud poole C ++ arendajad
869
0
1
C / C ++ Programming