ist void foo() das gleiche wie void foo(void)?

Gast #2804876
Lesenswert?

Hallo Leute,

meine Frage gilt für "C" und im speziellen gcc.
Bei implizit definierten Funktionen geht doch der Compiler immer von 
einer int foo(int) Definition aus.
Wenn aber hier kein Argument angegeben ist, was tut ein streng nach 
Vorschrift arbeitender Compiler annehmen?

Ist also void foo() genau gleichzusetzen mit void foo(void)

Zur Zeit tut jedenfalls der Compiler nicht "meckern".

Danke,

der Adib.
#2804880
Lesenswert?

Adib schrieb:
> Hallo Leute,
>
> meine Frage gilt für "C" und im speziellen gcc.
> Bei implizit definierten Funktionen geht doch der Compiler immer von
> einer int foo(int) Definition aus.

nein.

Er versucht aus der Verwendung der Argumente die Datentypen der 
Argumente zu erraten. Der Return WErt wird als int angenommen, soweit 
liegst du richtig. Sieht aber die Verwendung so aus

   i = foo( 5.0 );

dann nimmt der Compiler an, dass foo 1 Argument hat, und das dieses vom 
Datentyp double ist.

> Wenn aber hier kein Argument angegeben ist, was tut ein streng nach
> Vorschrift arbeitender Compiler annehmen?

  int foo( void );
Gast #2804930
Lesenswert?

Adib schrieb:
> Hallo Leute,
>
> meine Frage gilt für "C" und im speziellen gcc.
> Bei implizit definierten Funktionen geht doch der Compiler immer von
> einer int foo(int) Definition aus.
> Wenn aber hier kein Argument angegeben ist, was tut ein streng nach
> Vorschrift arbeitender Compiler annehmen?

Argument oder Parameter? Du scheinst eher letzteres zu meinen. Das 
Argument ist das, was ich beim Aufruf übergebe, der Parameter ist das, 
was ich bei der Deklaration reinschreibe.

> Ist also void foo() genau gleichzusetzen mit void foo(void)

Nein. Das erste ist eine Funktion, die eine an dieser Stelle unbekannte 
Parameterliste hat, das zweite ist eine, die keine Parameter hat.

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