Lieber Besucher, herzlich willkommen bei: OS X Entwicklerforum.
Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert.
Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können.
Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang.
Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.
Anfängerfrage bezüglich main Methode
Hi Leute,
ich bin grad dabei C zu lernen und hab mir dazu auch schon so einige Literatur anegschafft.
Leider scheint es in C Fachbüchern so zu sein das jeder ein wenig sein eigenes Süppchen zu kochen scheint.
Folgendes :
Es wird ja fast immer HelloWorld als Bspl. angegeben.
So, da schreibt der eine nur
|
Quellcode
|
1
|
main ()
|
,
der andere
|
Quellcode
|
1
|
int main
|
und wieder ein anderer schreibt
|
Quellcode
|
1
|
void main (void)
|
.
Dann schreibt der eine
|
Quellcode
|
1
|
return (0);
|
dazu und ein anderer nicht.
Ausserdem habe ich noch bei einem
|
Quellcode
|
1
|
getchar();
|
entdeckt worauf das Programm auf eine Tastatureingabe wartet.
Die Sache ist nun das ich das ganze Programm ohne int und ohne void aufschreiben kann.
Ausserdem funktioniert es auch ohne return und ohne getchar.
Meine Frage ist jetzt, was genau die Konventionen sind.Wie macht man es generell?
Da ich grade alles lerne, möchte ich schon das ich es mir auch so einpräge wie es aktuelle Konvention ist.
Danke
|
Quellcode
|
1
|
int main( int argc, const char* argv[] )
|
- main ist eine Funktion und keine Methode.
- In Kernighan & Ritchie C konnest Du den Rückgabetyp in der Funktionsdefinition und -deklaration weglassen. Der K&R-Compiler hat dann int als Rückgabetyp verwendet. Das ist aber veraltet und schlechter Stil.
- Die richtige Signatur lautet int main(int argc, char *argv[]) oder int main(int argc, const char *argv[]).
- Die runden Klammer in der Return-Anweisung sind überflüssig, weil return keine Funktion ist. Es reicht also return 0;
- Die Deklaration, Definition und der Aufruf einer C-Funktion enthält immer runde Klammern.
Danke.
Der Prof hat in seinen aktuellen Vorlesungsunterlagen
|
Quellcode
|
1
|
int main ()
|
verwendet.
Vielleicht kommt die vollständigere Variante ja etwas später.
Wenn Du die Kommandozeilenargumente in main() nicht verwenden willst, kannst Du sie in der Deklaration auch weglassen. Die C-Runtime ruft die Funktion trotzdem auf.
Danke.
Der Prof hat in seinen aktuellen Vorlesungsunterlagen
|
Quellcode
|
1
|
int main ()
|
verwendet.
Vielleicht kommt die vollständigere Variante ja etwas später.
In C funktioniert ein Funktionsaufruf auch mit einer abweichenden Zahl von Parametern. Das liegt daran, dass der Aufrufer die Parameterübergabe und -bereinigung übernimmt. Der Compiler meckert zwar, wenn er das sieht, aber es funktioniert dennoch (By-Design, also nicht nur zufällig.) Da du kaum dein Programm gemeinsam mit dem Betriebssystem übersetzt, merkt es in diesem Falle nicht einmal der Compiler.
Es hat noch nie etwas
gefunzt. To tear down the Wall would be a Werror!
verhindert man die Leaks, so verhindert man auch die Begrenzung auf 128 Abfragen
ist "int main()" nicht sogar explizit im Standard? Ich bilde mir ein, sowas mal gehoert zu haben..
♥C++
ist "int main()" nicht sogar explizit im Standard? Ich bilde mir ein, sowas mal gehoert zu haben..
Ich meine auch, dass es da zwei Alternativen gibt. Aber letztlich spielt es in diesem Falle keine Rolle.
Es hat noch nie etwas
gefunzt. To tear down the Wall would be a Werror!
verhindert man die Leaks, so verhindert man auch die Begrenzung auf 128 Abfragen