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.
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 );
Deklarationen wie "void foo();" werden nur noch akzeptiert, um kompatibel mit uralten C-Programmen zu sein. Sowas sollte man nicht mehr verwenden.
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.
Adib schrieb: > Ist also void foo() genau gleichzusetzen mit void foo(void) Der Vollständigkeit halber noch: in C++ (welches den historischen Ballast der "beliebigen" Parameterliste nicht kennt) sind beide Formen in der Tat gleich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.