Variable Argument-Listen übergeben

OP #626667
Lesenswert?
• ▲
▼
Hallo,

ich muss Variable Argument-Listen von einer Funktion an eine andere 
übergeben.
Gibt es da eine Möglichkeit ? Ich kann dazu leider keine Informationen 
finden.

int test(int d, int request, ...)
{
  va_list ap;
  va_start(ap,request);
  return othertest(request,ap);
  va_end(ap);
}


so hab ichs probiert, aber leider funktioniert das nicht.
Gast #626673
Lesenswert?
• ▲
▼
1
int test(int d, int request, ...)
2
{
3
  va_list ap;
4
  va_start(ap,request);
5
  return othertest(request,ap);
6
  va_end(ap);
7
}

Wenn othertset als zweiten Parameter eine va_list haben will, geht das 
so.
#628094
Lesenswert?
• ▲
▼
Christian Ulrich wrote:
> die v*print* routinen übergeben ein va_list typ und kein ... ich kann
> mich aber mit dieser lösung gut zufriedengeben

Anders geht es in C nicht, da es keine Möglichkeit gibt, eine zur 
Übersetzungszeit nicht bekannte Anzahl Argumente auf den Stack zu 
pushen.

Man könnte das zwar mit Inline-Assembler machen, ist aber eine 
Sauerei...
#628750
Lesenswert?
• ▲
▼
Gast wrote:
> Wird der jemals erreicht?

Nein.

va_end ist ein Macro, das in vielen Implementierungen leer ist, insofern 
macht das meistens nichts aus, aber streng genommen, ist es natürlich 
nicht korrekt, va_end hinter ein unbedingtes return zu schreiben. Jeder 
halbwegs optimierende Compiler würde es wegwerfen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.