Parameter einer Funktion vordefinieren?
-
Nabend!
Ich habe eine kurze Frage. Kann man Parameter einer Funktion vordefinieren? In C++ ist dies ja möglich, aber auch in C?Beispielsweise:
int func(int x = 3); { [...] }
Jedoch sagt der GCC dazu:
Fehler: expected »;«, »,« or »)« before »=« token
Weiß da jemand weiter?
-
Ist nicht möglich.
-
Da hilft es leider nur die Funktionen zu überladen...
//Funktion void test(int in) { //tue irgendwas } //Überladung void test() { test(1); }
-
NightmareCC schrieb:
Da hilft es leider nur die Funktionen zu überladen...
Und das geht in C?
-
Ups da war ich wohl zu schnell...
Habs gerade getestet und es scheint wohl nicht zu funktionieren. Sorry für die falsche Information
-
In C ist das Leider so nicht möglich wie unter C++
-
Mal eine ganz andere Frage: Wozu einen Parameter vorher definieren?
-
anfähner schrieb:
Mal eine ganz andere Frage: Wozu einen Parameter vorher definieren?
Es ist in C++ manchmal ganz praktisch, wenn auch nicht unbedingt notwendig. Bspw. können Kontruktoren in Klassen Default-Argumente besitzen, um die Tipparbeit zu reduzieren.
In C wäre eine Funktion wiechar *itoa( int value, char *string, int radix = 10);
doch eigentlich auch ganz nett.
-
Musst du unbedingt reines C verwenden? Wenn ja dann geht es halt leider einfach nicht...
-
In C muss man dann halt sowas machen
char *itoa(int val,char *str,int radix) { /* blablubb */ } char *itoa_10(int val,char *str) { return itoa(val,str,10); }
Wobei dieses vordefinieren von Parametern IMHO nicht wirklich sinnvoll ist ( Die Dinger heißen Parameter weil se sich immer ändern)
-
linux_c89 schrieb:
Wobei dieses vordefinieren von Parametern IMHO nicht wirklich sinnvoll ist ( Die Dinger heißen Parameter weil se sich immer ändern)
Ganz meine Meinung. Optionale Argumente sind öfters nützlich, z.B. bei GUI-Bibliotheken, wo viele Funktionen über 10 Argumente nehmen und die meisten Parameter eine sinnvolle Voreinstellung haben. Aber hin und wieder will ich einen abgeschlossenen Algorithmus verändern, und als erste Möglichkeit sticht ein zusätzlicher, optionaler Parameter ins Auge. Das ergibt meistens dreckigen Code, der nach der Überarbeitung ohne optionale Parameter auskommt.