Optionaler Parameter in Funktionen
-
Hallo Leute!
Ich hab da mal ne Frage zu Funktionen unter C, und zwar ist es möglich der Funktion einen Paramater zu geben, der beim Aufruf der Funktion an anderer Stelle nicht "ausgefüllt" werden muss?gruß, sebi
-
Du könntest Ellipsen benutzen, also diese Dinger "..." und dann mit va_arg arbeiten.
void blah(int var1, ...)
{}
blah(1, "test");
musst dafür nur mal ein bissle im Inet suchen, wie man mit va_arg umgeht.
-
void foo( int bar = 1 ) { // Backe, backe Kuchen... } int main( int argc, char *argv[] ) { foo( ); <- bar defaults to 1 return 0; }
eventuell?
Die va_arg's sind doch IMHO nicht wirklich portabel, oder?Greetz, Swordfish
-
C kennt keine Defaultwerte. Und soweit ich weiß sind va_args portabel.
-
@swordfish
das war auch meine idee, aber da bekomm ich nen fehler, wird also von C wohl nicht unterstützt@feigling
deute ich deinen post richtig, dass es unter C nicht möglich ist solche optionalen parameter anzugeben?
-
Ja, C kennt keine Defaultwerte und man kann sie nicht angeben. Ich weiß nicht, wie das in C99 aussieht, aber in C89 können keine Defaultparameter benutzt werden. Bei C99 gehe ich auch mal aus, dass es nicht geht.
-
<kleinlaut>
tschuldigung, kommt davon, wenn man immer c++ Compiler benutzt
</kleinlaut>
-
Zur Ergänzung: varargs sind zwar portabel, ihre Anzahl kann aber nicht bestimmt werden. Von daher ist das ganze nur sicher wenn man die Anzahl mit übergibt (bei printf passiert das indirekt durch den Formatstring)
-
LordJaxom schrieb:
Von daher ist das ganze nur sicher wenn man die Anzahl mit übergibt
oder eine Endemarke setzt (ala "der letzte Parameter ist immer NULL")