Gå til innhold

ukjent antall argumenter i en funksjon


Anbefalte innlegg

jeg sitter og grubler, føler jeg grubler mye om dagen.

Har sittet og grublet på printf funksjonen, hvordan kan man definere et ukjent antall argumenter til en funksjon? ...) hva skjer når man skriver ...) til slutt? hvor blir det av dette? er det mulig å hente dette frem på en eller annen måte?

Lenke til kommentar
Videoannonse
Annonse

når stdcall rutiner lagrer argumentene, legges dette i stacken med

push instruksjonen, som hentes av prosedyren med pop instruksjonen, i motsetning til fastcall rutiner, som bruker registrene.

 

Jeg er litt usikker på hvordan det gjøres, for jeg har ikke sjekket, men jeg kan forestille meg at den bare legger til et tall foran som sier hvor mange argumenter som følger.

Lenke til kommentar
Jeg er litt usikker på hvordan det gjøres, for jeg har ikke sjekket, men jeg kan forestille meg at den bare legger til et tall foran som sier hvor mange argumenter som følger.

Dette tror jeg er galt. Hvis man spesifiserer flere argumenter i format-strengen til printf enn det som følger går det sjelden bra :_)

Lenke til kommentar

Er ikke helt sikker på dette her men jeg tror det skal se slik ut:

 

void func(int ...);

 

void func (int severity ...)

{

/*...*/

}

 

Å få tak i argumentene inni funksjonen må gjøres på en spesiell måte, men du bør lese litt om det før du prøver deg.

Dessuten betyr severity et ukjent anntall char*, jeg vet ikke om det finnes andre "kodeord" som gjelder for andre argumenttyper

 

Funksjonen tar en int fulgt av x anntall char*

Lenke til kommentar
void func (int severity ...)

{

    /*...*/

}

 

[...]

Dessuten betyr severity et ukjent anntall char*, jeg vet ikke om det finnes andre "kodeord" som gjelder for andre argumenttyper

 

Funksjonen tar en int fulgt av x anntall char*

Dette er ikke helt riktig. Når du bruker ... i en argumentliste, betyr det at det kan (men det må ikke) være flere argumenter, hvis antall og type er ukjent.

 

void func(int severity ...);

Denne funksjonen tar et heltall som argument. Du kan dessuten spesifisere et ubestemt antall ytterligere argumenter. De øvrige argumentene kan ha forskjellige typer, og de kan ha akkurat de typene brukeren av funksjonen ønsker.

 

severity er ikke et nøkkelord i C eller C++, og betyr ikke noe som helst. severity er ganske enkelt identifikatoren til heltallet.

 

 

(Ellipsene (...) bryter for øvrig med typesystemet, og bør unngås i C++)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...