fleste funktioner acceptere et fast antal argumenter. Nogle programmer kræver imidlertid funktioner til at acceptere variable parametre . Et velkendt eksempel er print funktion C. For sådanne sager , C + + tilbyder en kraftfuld løsning, der lader compiler dechifrere argumenterne under kørslen . Læs videre for en tutorial, der demonstrerer, hvordan man gennemfører sådanne funktioner. Ting du skal
Intermediate C + + Online C + + compiler med IDE , såsom Microsoft Visual C + +
Vis Flere Instruktioner
1
Tilsæt STDARG.H biblioteksarkiv ind dit program. Det er, hvor du definerer makroer. På den første linje i filen , skal du indsætte # include .
2
Brug makroer va_arg , va_start og v_end der samarbejder med va_type i stdarg.h .
3
etablere en variabel af typen va_list til at fungere som en liste markør.
4
Adgang de enkelte parametre ved hjælp af va_arg makro. Find en måde at fortælle va_arg makro hvilken type argument, du ønsker det at hente til at levere det rigtige antal bytes fra stakken.
5.
Cast resultatet fra trin 4 til den type, du ønsker det at være.
6
Ring til va_end makro til at afslutte behandlingen af variable parametre .
7
Kig på eksemplet nedenfor , der viser trin 2 til 6 . Funktion myprintf accepterer et format streng, der angiver, hvilken type og placering af hvert argument . Efter format strengen er på listen over argumenter . Funktionen udskriver argumenter. For overskuelighedens skyld kan det kun behandle int , float og char : Hej //erklæring
void myprintf ( char * format , ... ), Twitter //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;
float f ;
char c.
} enhver ,
hvis ( args [i] == 'i' ) {
any.i = va_arg ( vl, int ),
printf ( "% i \\ n" , any.i )
} else
if ( args [i] == ' f' ) { < br > 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 {
smide SomeException ;
}
va_end ( VL ),
}