13. marts 2002 - 01:12
Der er
1 løsning
Hvad er det?
Følgende kode compiler fint i Visual C++:
void Test (int cnt, char *tekst, ...) {
printf (tekst);
};
Denne funktion kan kaldes med et vilkårligt antal parametrer, så længe der er mindst 2.
Men hvad hedder den type erklæring og hvordan får man udskrevet de parametrer funktionen er kaldt med? (altså tekst)
13. marts 2002 - 01:43
#1
Det hedder sig at funktionen Test tager en række uspecificerede argumenter. I stdarg.h er defineret 3 makroer, som hjælper med at udlede de uspecificerede argumenter. De 3 makroer hedder va_start, va_arg og va_end. Så programmet kommer til at se sådan ud:
void Test (int cnt, char *tekst, ...) {
char *tmp;
va_list marker;
printf ("count er %d\n", cnt);
printf ("\nher kommer de restende argumenter:\n\n");
va_start (marker, cnt);
while ( (tmp = va_arg (marker, char* )) != NULL) {
printf (tmp);
printf ("\n");
}
va_end (marker);
};
int main(int argc, char* argv[])
{
Test (10, "her", "er", "en", "raekke", "uspecificerede", "argumenter" , 56);
return 0;
}
va_start tager 2 inputs: marker, som er en pointer til et argument og en pointer til det argument, marker skal starte efter.
va_arg tager 2 inputs: markøren fra før og en hvilken som helst type - her char*
va_arg returnerer argumentet - på en char* returnerer den NULL når der ikke er flere....
va_end tager 1 input: markøren og returner intet.