funktion mit vordefinierten variablen

Gast #5607846
Lesenswert?

Hallo,
gibt es eine möglichkeit in C eine Funktion mit deklarierten Variablen 
zu definieren? So dass ich die Funktion nicht mit allen Variablen 
aufrufen muss?

z.B.
1
uint8_t volume(x, y, z=0);

wenn ich jettz volume(1,2) aufrufen würde, dass z automatisch als 0 
angenommen wird?

Jens
Gast #5607891
Lesenswert?

fop schrieb:
> Nein. Das ist ein Feature von C#. In C++ könntest Du immerhin die
> Funktion überladen, also eine zweite Variante erstellen, die nur 2
> Parameter erwartet und sich dann so verhält, als wäre z==0.

Ich dachte in C++ wäre es auch möglich. Dann muss ich halt immer 0 
mitsenden.

Danke
Persönliche Seite #5607893
Lesenswert?

fop schrieb:
> Nein. Das ist ein Feature von C#. In C++ könntest Du immerhin die
> Funktion überladen,

Das ist nicht nötig, da es in C++ exakt dieselben Defaultargumente mit 
exakt derselben Syntax gibt. Sie müssen in der Deklaration (d.h. dem 
Funktionsprototypen) und nicht der Definition (der eigentlichen 
Funktion) angegeben werden:
1
// Prototyp
2
int bla(int fusel, int laber = 0);
3

4

5
...
6
// Implementierung
7
int bla(int fusel, int laber)
8
{
9
  ... etc
10
}

In C aber gibt es das nicht.
#5607896
Lesenswert?

Jens schrieb:
> Hallo,
> gibt es eine möglichkeit in C eine Funktion mit deklarierten Variablen
> zu definieren? So dass ich die Funktion nicht mit allen Variablen
> aufrufen muss?
>
> z.B.
>
1
> uint8_t volume(x, y, z=0);
2
>
>
> wenn ich jettz volume(1,2) aufrufen würde, dass z automatisch als 0
> angenommen wird?
>
> Jens

Wobei das Ergebnis für volume(x,y); x,y:beliebig, falls der Name nicht 
in die Irre führen soll, wohl nicht mal einen Aufruf erfordert.
Gast #5608012
Lesenswert?

unsicher schrieb:
> Rufus Τ. F. schrieb:
>> // Prototyp
>> int bla(int fusel, int laber = 0);
>
> Müssen die Default-Params nicht von links und lückenlos erfolgen:
>
> ... (int foo = 123, int myfoo = 456, int blabla, int blub);
>
> aber nicht
> ... (int myfoo = 456, int blabla, int blub, int foo = 123);

Nein! Sie müssen "von rechts lückenlos" erfolgen
> ... (int myfoo, int blabla, int blub = 456, int foo = 123);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren