In nur einer Datei programmieren
-
Hallo
es heißt int main.
chrische
-
Vielen Dank für Eure Antworten. Das mit dem int statt void hatte ich schon gemerkt

MfG, und vielen Dank noch einmal, Ozzy
-
chrische5 schrieb:
Hallo
es heißt int main.
chrische
Je nachdem, ob main() einen Wert zurückgeben soll oder nicht. Ich lasse main() meistens nichts zurückgeben, daher das "void". Es funktioniert beides. Wenn ihr "int main()" benutzt, müsst ihr nur darauf achten, ,dass (meist am Schluß der main()- Funktion auch ein "return 'irgendwas';" folgt.
Gruß
Christian
-
ChrisPHL schrieb:
Je nachdem, ob main() einen Wert zurückgeben soll oder nicht. Ich lasse main() meistens nichts zurückgeben, daher das "void". Es funktioniert beides. Wenn ihr "int main()" benutzt, müsst ihr nur darauf achten, ,dass (meist am Schluß der main()- Funktion auch ein "return 'irgendwas';" folgt.
Leider falsch. In zweierlei Hinsicht.
1. Es heisst int main. Punkt. Ein void main ist im Standard nicht definiert.
2. Ein fehlendes return in der Funktion int main wird implizit als return 0 angesehen. Wichtig: Das gilt nur in int main und auch nur in C++.
-
machs doch einfach so wie der Compiler auch. Schreib alle deine Klassen so wie du es machen würdest und da wo du dein #include stehen hast fügst du halt einfach den Inhalt der Datei ein. SChon hast du deine "ein-Datei-Source-Programm"
-
ChrisPHL schrieb:
Du musst die Klassen einfach in der gleichen Datei, jedoch ausserhalb von main() deklarieren.
Damit bin ich mir nicht so sicher: Mindestens das 'class BspKlasse{};' muss über(!) der main() stehen. [/code]Also, irgendwie denke ich, dass das so nicht stimmt. Es muss mindestens das class foo; da stehen, aber ohne geschweifte Klammern. Definieren kann man die Klasse dann auch nach der main.
Oder irre ich mich hier?
-
Nö, die Funktionen die du in der main() aufrufen willst musst du mindestens vorher als Prototyp drin haben. So wie ChrisPHL das gemacht hat, ist schon richtig (bis auf das void main :p ).
Du kannst aber wirlich auch die main() einfach zuletzt machen, ist ja eh nicht so viel drin, die Action geschieht in den Klassen.
-
Jetzt habe ich doch noch mal eine Frage: Wofür steht denn dieses viel zitierte "foo"? Ich sehe es immer wieder als Bsp.- Klasse oder -Funktion.
Noch mal zu dem "int main() oder void main()": Standard hin oder her, das nicht nicht Standard gemäße "void main()" funktioniert (bei mir) einwandfrei. Wer sagt denn, dass man sich an den Standard halten muss?
Natürlich ist es dennoch generell sinnvoll, das ist klar.Gruß
Christian
-
-
Hallo
ChrisPHL schrieb:
Wer sagt denn, dass man sich an den Standard halten muss?

Wenn man den Compiler wechselt, ist es schon schön, wenn man sich an den Standard hält, weil das die Portierung erleichtert. Außerdem ist es schön, weil es Programme vergleichbar und damit besser wartbar macht (stimmt jetzt vielleicht nicht für main, aber sonst)
chrische
-
chrische5 schrieb:
Hallo
ChrisPHL schrieb:
Wer sagt denn, dass man sich an den Standard halten muss?

Wenn man den Compiler wechselt, ist es schon schön, wenn man sich an den Standard hält, weil das die Portierung erleichtert. Außerdem ist es schön, weil es Programme vergleichbar und damit besser wartbar macht (stimmt jetzt vielleicht nicht für main, aber sonst)
chrische
Stimmt voll und ganz!
Christian
-
hmmm wieso muss man die als prototyp mindestens angeben bevor man sie in der main benutzt ?
int foo(int a,int b){ int c = a+b; return c; } int main(void){ foo(4,6); return 0; }geht doch genauso ohne prototyp
-
Meinte sowas:
class Foo; int main(void){ Foo theFoo; theFoo.foo(4,6); return 0; } class Foo { public: int foo(int a,int b){ int c = a+b; return c; } };Geht nicht.
-
Stelfer schrieb:
geht doch genauso ohne prototyp
Ja, weil du dort vor der main() die komplette Definition hast - und die beinhaltet auch die Deklaration der Funktion (also den Prototyp).
Der Compiler muß einen Namen zumindest kennen, bevor er ihn verwenden kann. Und dazu benötigt er entweder die Deklaration dieses Namens (Prototyp oder extern-Variable) oder seine Definition.