Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako používať premenných parametrov funkcií v C + +

Väčšina funkcií prijať pevný počet argumentov . Niektoré aplikácie však vyžadujú funkcie pre príjem premenných parametrov . Známym príkladom je tlačová funkcia C. Pre takéto prípady , C + + ponúka výkonné riešenie , ktoré umožňuje kompilátor rozlúštiť argumenty pri behu . Prečítajte si o tutoriál , ktorý ukazuje , ako implementovať tieto funkcie . Veci , ktoré budete potrebovať
Intermediate C + +
C + + kompilátor s IDE , ako je napríklad Microsoft Visual C + +
Zobraziť ďalšie inštrukcie Cestuj 1

Pridať na súbor knižnice STDARG.H do váš program . To je miesto , kde môžete definovať makrá . Na prvom riadku súboru , vložiť # include .
2

Pomocou makier va_arg , va_start a v_end , že spolupracovať s va_type v stdarg.h .
3

Vytvoriť premennú typu § va_list fungovať ako zoznam markeru .
4

Prístup jednotlivých parametrov pomocou va_arg makra . Nájsť spôsob , ako povedať o va_arg makro , aký typ argumentu ho chcete získať dodať správny počet bajtov zo zásobníka .
5

Cast výsledok z kroku 4 na type , ktorý ho chcete byť .
6

Zavolajte va_end makro ukončiť spracovanie rôznych parametrov .
7.

Pozrite sa na nižšie uvedený príklad , ktorý ukazuje , Kroky 2 až 6. Funkcie myprintf prijíma formátovací reťazec , ktorý určuje typ a polohu každého argumentu . Po formátovací reťazec je zoznam argumentov . Funkcia vytlačí argumenty . Pre jednoduchosť je možné len proces int , float a char : HONDA //deklarácia
stratu myprintf ( char * format , ... ) ;
//defintion
void myprintf ( char * format , . .. ) {
§ va_list vl ;
int i ;
va_start ( vl , args ) ;
for ( i = 0 ; args [ i ] = ' \\ 0 ' ; ! + + i ) {
únie any_t {
int i ;
float f ;
char c ;
} existuje ;
if ( args [ i] == ' i ' ) {
any.i = va_arg ( vl , int ) ;
printf ( " % i \\ n" , any.i ) ;
} else
if ( args [ i] == ' f ' ) {
any.f = va_arg ( vl , float ) ;
printf ( " % f \\ n" , any.f ) ;
} else
if ( args [ i] == ' c ' ) {
any.c = va_arg ( vl , char ) ;
printf ( " % c \\ n" , any.c ) ;
}
else {
hodiť SomeException ;
}
va_end ( vl ) ;
}

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené