Thomas schrieb:
> hallo,
>
> ich möchte an eine funktion eine variable anzahl parameter übergeben.
> bisher tat ich dieses immer wie folgt
>
1 | > void main_menue_create(Uint8 u8_layout, ...)
|
2 | >
|
>
> quasi lässt sich dieses mit "..." erschlagen und dann mit va_end etc.
> auf die parameter zugreifen. problem dabei ist, dass ich mindestens
> einen parameter "fest" übergeben muss; im beispiel u8_layout.
>
> gibt es eine weitere möglichkeit?
So nicht.
Die Funktion benötigt ja irgendeine Information an hand derer sie die
Anzahl bzw. die Datentypen der Argumente feststellen kann.
(Denk einfach immer nur an printf. Der Formatstring dient dir zwar
hauptsächlich um die Formattierung festzulegen. Für printf selber ist
aber das Wichtigste, dass ihm die ganzen %f, %d und Konsorten mitteilen,
was denn eigentlich alles mitgegeben wird. Die eigentliche Formatierung
ist nur Zugabe :-)
> quasi suche ich nach
1 | void main_menue_layout(...)
|
Wenn die Datentypen der Argumente feststehen und nur deren Anzahl
variiert: Warum steckts du nicht einfach alle Argumente in ein Array und
übergibst der Funktion deren Anzahl und einen Pointer auf das Array. Was
für main() gut genug ist, wird wohl für dich auch gut genug sein :-)