Original erstellt von Silver
also include <iostream> musst du machen, und es heisst normalerweise int main(int argc, char **argv) !!
mfG
Bitte keine Anfänger mit Halbwahrheiten belasten, die zum eigentlichen Problem nichts beitragen. Auch ich wurde durch solche Aussagen am Anfang nicht gerade gefördert.
Zum eigentlichen Problem:
Zu allererst folgendes:
Du brauchst kein Semikolon hinter einer geschweiften Klammer. Anweisungen in geschweiften Klammern stehen überall da, wo normalerweise syntaktisch nur eine einzige Anweisung stehen würde. Wenn man aber mehrere Anweisungen haben will, braucht man geschweifte Klammer, um alle Anweisungen sozusagen zu einer großen Anweisung zusammenzufügen. In deinem Code stehen nach der while-Schleife und nach main ein Semikolon. Doch eigentlich sind sie nicht nötig, denn sie sind leere Anweisungen, da mit der schließenden schweifenden Klammer die Anweisung zu Ende ist. Und im Falle des zweiten Semikolons, ist die Anweisung sogar nicht einmal mehr im Programm.
Stell dir das ungefähr so vor: Jede Anweisung ist ein Blatt Papier, dass du einem Mitarbeiter in die Hand drückst, auf dem deine Befehle stehen. Auf jedem Papier steht nur ein Befehl. Wenn jetzt aber ein Mitarbeiter mehrere Befehle ausführen soll (so wie z.B. dein while-Schleifen Mitarbeiter), dann nimmst du beliebig viele Papiere und heftest sie mit ner Büroklammer zusammen. An der geschlossenen Klammer verlässt der Mitarbeiter dein Büro um seiner Arbeit nach zu gehen und der nächste kommt rein um dein Befehl entgegen zu nehmen. Du drückst ihm dann ein leeres Blatt in die Hand. Er wird sich freuen, dass er nichts zu tun hat, aber eigentlich ist es sinnlos, nicht wahr?
Jetzt zu deinem eigentlichen Problem:
Ganz ehrlich, ich kann dir nicht helfen, warum genau Dev-Cpp dir einen Fehler ausgibt, ich kann nur vermuten, da deine Aussage etwas wage ist. Doch ich will es versuchen. In der Tat wäre es besser wenn du <iostream> verwendest und nicht <iostream.h>, weil letztere veraltet ist. Doch das ist nicht das Problem. Vermutlich meckert Dev-Cpp, weil du die Namespaces vergessen hast. MSV-C++ weiß wohl, dass das ein häufiger Fehler ist und korrigiert ihn automatisch. Versuche es einmal mit folgendem Code:
Code: Alles auswählen
#include <iostream>
using namespace std;
void main()
{
int i=1;
while(i<=10)
{
cout<<i<<endl;
i=i+1;
}
}
Kleiner Unterschied, hoffentlich erwünschte große Wirkung. Und zerbrech dir am Anfang nicht den Kopf was du da gemacht hast, werde erst mit den grundsätzlichen Dingen richtig vertraut, um dann auf sowas rumzukauen. Aber falls es dich trotzdem interessiert: Die cout, die Funktion, die du benutzt (genauso wie endl), gehört zur C++ Standardbibliothek. Und diese hat nunmal den std namespace vorne dran.
Bildlich wäre es so, wie wenn du deine Befehle in Karteischränken mit verschiedenen Namen aufbewahrst. Normalerweise haben die Anweisungen, die von dir programmiert werden, keine Namen. Aber cout wurde ja nicht von dir programmiert, sondern von irgendjemand. Und der hat die Anweisung im Karteischrank wenn mit dem namen std abgelegt. Und wenn du das dem Computer nicht sagst, kann es sein, dass ers nicht blickt.
Zum Abschluss noch zwei Dinge:
1. Gewöhn dir gleich von Anfang an an, Fehlerbeschreibung möglichst genau vorzunehmen. Wenn du einen Fehlertext bekommst, poste die genau Fehlermeldung zum Code. Rechtsklick auf die Fehlermeldung und Copy und dann hier Paste sollte bei allen IDEs gehen. Bei Dev-Cpp gehts, bei MS VS 6.0 und VS.net gehts auch und du benützt eh nur die. Um so genauer du den Fehler beschreibst, desto besser könnnen wir dir helfen.
2. Diese Information muss dich nicht umbedingt berühren, nur falls du es von Anfang an mit der Terminologie genau nehmen willst, spuckt dir nicht dein Dev-Cpp Compiler und auch nicht dein MS VS Compiler eine Fehlermeldung aus, weil das sind keine Compiler. Compiler sind normalerweise Konsolen basiert und von ihrer eigentlichen Arbeit kriegst du unter Windows wenn du dir nicht die Mühe machst und sehr genau hinschaust nichts mit. Dev-Cpp und auch MS VS sind IDE, das steht für Integrated Development Entviroment, zu deutsch Integrierte Entwicklungs Umgebung. Sie kombinieren einen Editor, normalerweise mit Syntaxhighlightning (= Hervorhebung der einzelnen Befehle), Projektorganisation in Dateien und Klassen, Compiler, Debugger und was weiß ich was. Aber gerade bei Dev-Cpp hat die IDE nichts mit dem Compiler zu tun. Wenn du auf den Compile-Button klickst, ruft Dev-cpp den gcc-Compiler mit verschiedenen Kommandoübergaben extra auf. Es öffnet sich nur keine Konsoloe, die das schön demonstrieren & dokumentieren würde, sondern so ne olle Fortschrittsbox. Nur der Vollständigkeit und Richtigkeit halber. Falls du das jetzt noch nicht verstanden haben solltest, vergiss es einfach und komm in zwei Monaten zu diesem Absatz zurück.
Ansonsten hoffe ich, dich mit meinen sehr ausführlichen Auschweifungen nicht gelangweilt zu haben, es anständig erklärt zu haben (auch anschaulich an meinen Beispielen) und das es nicht falsch ist. Wenn ja, wird mich edgewalker oder sonst irgendwer hoffentlich berichtigen.
Und dann wünsch ich dir noch viel Spaß und Glück/Erfolg beim weiteren lernen
n00dles