ISO C++ forbids declaration with no type
-
sorry, geändert

-
// falsch ist dieses nomoi() { .... // richtig waere so: int nomoi() { ....Zu den ganzen Stylesachen
- Code-Tags
- kein .h in den c++ Standard-Headern
- uebersichtlichen Code schreiben
- eine Vorwärtsdeklaration von main ist im allgemeinen nicht notwendig
-
Flopa schrieb:
nomoi()
{ int lasteingabe;
cout << "Nochmal?\n1=Ja\n2=Nein" << endl;
cin >> lasteingabe;if (lasteingabe==1)
{primzahl();}else return 0;
// Viele Leerzeilen
getch();
}
Mal ganz davon abgesehen, dass die Einrückung (nicht nur in der Funktion) grauenhaft ist, fehlt im Kopf die Typangabe. Auch wenn es einen Prototypen gibt, muss man den Typ bei der Definition explizit angeben.
Btw: was soll das getch()?
-
Wie schon von Nexus gesagt muss die Funktion
nomoiauch einen Rückgabetypen haben (auch falls kein Wert zurückgegeben werden soll ist der Typvoid).
-
Bezieht sich nicht auf das Problem.
Aber vielen Dank dir und tut mir leid, dass ich als Anfänger nun ja eben nicht mit euren Standards mithalten kann. Meines Erachtens ist das übersichtlich, habe noch nie professionell etwas geschrieben, erkennt man bestimmt auch an meinem Post

-
Flopa schrieb:
...tut mir leid, dass ich als Anfänger nun ja eben nicht mit euren Standards mithalten kann. Meines Erachtens ist das übersichtlich,...
Also erst einmal zur Beruhigung: Es gibt nicht einen Standard, wohl aber mehrere kleinere Regeln/Entfehlungen zum Einrücken. Im wesentlichen musst du dir einfach überlegen, wie man Code schreibt, den man leicht lesen kann, und wo du alleine durch die Einrückung schon Fehler vermeiden kannst.
Unabhängig von den Einrückstil ist folgendes üblich:
1. Pro Zeile genau einen Befehl.
2. Variablen erst bei/vor der ersten Verwendung deklarieren (C++)
3. Sichtbare Einrückung der "Scopes" (Gültigkeitsbereiche von Variablen, in der Regel von Schleifen und Abfragen eingeleitet).In deinem Beispiel könnte dies wie folgt aussehen:
// Beispiel eines Einrückstiles (Ohne Bewertung des Inhaltes). void nomoi() { cout << "Nochmal?\n1=Ja\n2=Nein" << endl; int lasteingabe; cin >> lasteingabe; if (lasteingabe==1) { primzahl(); } else return; getch(); }Dadurch sieht man auf einen Blick was zusammen gehört, und auch das vergessen von öffnenden/schließenden geschweiften Klammern fällt schwerer. Zuviele Leerzeichen "trennen" eine Funktion optisch, lieber nur mit einzelnen Leerzeichen hantieren.
-
Also, wie ja bereits gesagt wurde, braucht deine Funktion einen Rückgabetyp, auch wenn du nichts zurückgibst.
Ich denke mal du weisst das wenn man nichts zurück gibt ein void davor schreibt, ansonsten eben das was du zurückgeben willst.
Also dann so:
void nomoi() { cout << "Nochmal?\n1=Ja\n2=Nein" << endl; int lasteingabe; cin >> lasteingabe; if (lasteingabe==1) { primzahl(); } else return 0; getch(); }oder mit Rückgabewert wie z.B. int dann so wie es asc bereits geschrieben hat.
Damit dürfte dann dein Problem gelöst sein.
-
return 0;läuft aber nicht, wenn die Funktion nichts zurückgibt. Stattdessen schreibst du einfachreturn;.
-
Cybertec schrieb:
Also, wie ja bereits gesagt wurde, braucht deine Funktion einen Rückgabetyp, auch wenn du nichts zurückgibst.
So nach dem fünften Mal können wir uns langsam sicher sein. :p
Athar schrieb:
return 0;läuft aber nicht, wenn die Funktion nichts zurückgibt. Stattdessen schreibst du einfachreturn;.Ja, hier fände ich es aber sinnvoller, das
getch()gleich insifreinzunehmen und daselsewegzulassen.
-
Er hatte es anscheinend aber immer noch nicht verstanden, deshalb hatte ich es nochmal geschrieben.
