Void main - Funktioniert nicht.
-
Liebe Community,
ich versuche mich momentan am Programmieren mit C++. Bin zur Zeit das Tutorial von Volkard am Lesen und hab folgenden "Fehler" entdeckt. Ich arbeite mit dem Dev-C++ Compiler in der neuesten Version.
Volkard benutzt am Anfang:
#include <iostream.h> void main() {Der Compiler öffnete bei mir daraufhin gar nichts, wenn ich auf Ausführen gegangen bin. Mir ist dann eingefallen das ich am Anfang beim anderen Tutorial dann
#include <iostream.h> int main() {geschrieben habe. Nun funktioniert das auch, kann mir einer sagen wodran das liegt ? Wäre wirklich super lieb, damit ich wieder was dazu lerne.
-
sAcr1fice schrieb:
kann mir einer sagen wodran das liegt ?
int main() ist halt richtig, alles andere nicht.
und es heißt
#include <iostream>
-
Alles klar, also das ".h" weg.
Ich habe noch eine kleine Frage und zwar, ich arbeite momentan mit Variablen und will das mit<<cineine Tastatureingabe erfolgt, die Zahl des Radiuses bei einem Kreis. Wenn ich dann z.b. 9 und Enter eingebe, schließt sich das Fenster einfach, dabei soll er mit der Zahl weiterrechnen.
// Bibliothek - Abrufen von Streams #include <iostream> // Beginn des Programmes int main() { float radius; cout<<"Bitte geben Sie den Radius ein:"; cin>>radius; cout<<"Der Umfang betraegt:"<<2*3.14*radius<<endl; // Verhindert, das sich das Fenster direkt wieder schließt. std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); };
-
#include <iostream> int main() { float rad(0.0f); std::cout << "Radius: "; std::cin >> rad; std::cout << "Der Umfang betraegt " << (2.0f * 3.14f * rad) << std::endl; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')); std::cin.get(); };
-
Ist das ; am Ende der Funktion von main() nicht überholt oder bin ich falsch informiert?
zu void main():
Es ist in c++ laut ANSI Standard so definiert das die Hauptfunktion Main immer einen Rückgabewert haben muss vom Typ int.
Es gibt Compiler die void main() unterstützen, aber wenn du c++ lernst ist es am besten dir gleich int main() einzuprägen.
Im übrigen vermisse ich bei dir die zeile
using namespace std;
damit deklariertst du deinen Namensbereich, sprich über diesen Namensbereich greifst du auf cout und cin, usw... zu.
Solltest du diese Zeile bei manch einem Compiler vergessen (z.B. Visual c++)
kreigst du damit auch ganz schnell Probleme.Besser glaich merken.
Ansonsten musst du
(wenn du vom Standard her programmieren willst und das würde ich dir empfehlen.)
wie mein Vorposter std:: voransetzen.
zu iostream.
Bei der Programmiersprache c heisst es iostream.h
programmierst du c++ ist es iostream (c++ hat keine .h Endung mehr)so ähnlich verhält es sich mit ner ganzen Reihe Header, wobei bei manchen ein
c vorangestellt wird:
(time.h >> ctime)
(math.h >> cmath)
(stdlib.h >> cstdlib)usw... usw...
()
-
Searence schrieb:
Bei der Programmiersprache c heisst es iostream.h
Ne, in C heissts stdio.h

-
Searence schrieb:
using namespace std;
damit deklariertst du deinen Namensbereich, sprich über diesen Namensbereich greifst du auf cout und cin, usw... zu.
Solltest du diese Zeile bei manch einem Compiler vergessen (z.B. Visual c++)
kreigst du damit auch ganz schnell Probleme.Aber pauschal using zu verwenden kann auch Probleme bereiten - gerade in Headern ist es günstiger, explizit mit "std::name" zu arbeiten.
Bei der Programmiersprache c heisst es iostream.h
programmierst du c++ ist es iostream (c++ hat keine .h Endung mehr)so ähnlich verhält es sich mit ner ganzen Reihe Header, wobei bei manchen ein
c vorangestellt wird:
(time.h >> ctime)
(math.h >> cmath)
(stdlib.h >> cstdlib)Für die Header der C Bibliothek mag das ja gelten, aber "iostream.h" ist kein Header der C Bibliothek, sondern eine Prä-Standard-Version des C++ Headers <iostream> (und nicht 100% kompatibel zu letzterem).
-
Nur wodran liegt es, das wenn ich eine Zahl eingebe und Enter drücke, das sich das Dos-Fenster wieder schließt ? Dann kann ich mit der eingegeben Zahl ja nicht rechnen.
-
Lösung: Starte das Programm von der Commandline aus!
(Sehr ausführlich beschrieben im KonsolenFAQ

-
sAcr1fice schrieb:
Nur wodran liegt es, das wenn ich eine Zahl eingebe und Enter drücke, das sich das Dos-Fenster wieder schließt ? Dann kann ich mit der eingegeben Zahl ja nicht rechnen.
Das liegt an der Natur abgeschlossener Programme, dass sie sich beenden

Hast Du am Ende von main den Warteblock so verändert wie (D)Evil es gezeigt hat? Die Methode mit in_avail funktioniert nicht immer (muss sie strenggenommen auch nicht, wäre mal dafür das in der FAQ zu ändern).
std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')); std::cin.get();
-
Daran, daß sich in Windows das Konsolenfenster automatisch schließt, wenn es nicht mehr gebraucht wird (sprich - wenn das Programm sich beendet hat). Schau dich mal in der Konsolen-FAQ um, wenn du Gegenmaßnahmen benötigst.
-
Searence schrieb:
Im übrigen vermisse ich bei dir die zeile
using namespace std;
damit deklariertst du deinen Namensbereich, sprich über diesen Namensbereich greifst du auf cout und cin, usw... zu.
Solltest du diese Zeile bei manch einem Compiler vergessen (z.B. Visual c++)
kreigst du damit auch ganz schnell Probleme.verbreite bitte nicht solches gefährliches halbwissen, danke.