Nur noch 9 (eigentlich 4 Fehler) im Code
-
Heinek3n schrieb:
Hab ich ... immernoch
error C2065: 'cout': nichtdeklarierter Bezeichner
langasam verzweifel ich ... könnte jemand den Code mal kopieren und bei sich versuchen zu kompilieren ?
Wäre shr nett...
Greez Heinek3n
Bezieht sich das auf meine Korrekturen oder auf die von Janjan? Wenn mein Code nicht compiliert, solltest du auf der Stelle deinen Compiler löschen.
-
Denkst du auch ein wenig mit, oder probierst du nur wild rum?
<iostream> wird benötigt, denn dort sind die Streaming-Klassen definiert die du mit cout benutzt. Dort ist auch cout deklariert. Also MUSST du diesen Header einbinden.Wenn du "using namespace std;" nicht nutzt, so muss du jedesmal den Namensraum von cout mit angeben, das heußt du musst immer std::cout schreiben anstatt cout.
"stdafx.h" musst du einbinden, weil du das vorkompiliere von Headerdateien in Visual Studio aktiviert hast für dein Projekt. Schlechte Idee. Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".
-
Natürlich versuche ich mitzudenken,.. wie gesagt, ich bin seit einer Woche dabei.
<iostream> wird benötigt, denn dort sind die Streaming-Klassen definiert die du mit cout benutzt. Dort ist auch cout deklariert. Also MUSST du diesen Header einbinden.
Dann bekomme ich die erste Fehlermeldung:
warning C4627: "#include <iostream>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
1> "stdafx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen.Wenn du "using namespace std;" nicht nutzt,[...]
Nutze ich, hier die ersten drei Zeilen des Codes:
#include <iostream> #include "stdafx.h" using namespace std;Da bekomme ich den Fehler:
error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden
und weiter:
error C2065: 'cout' / 'cin' : nichtdeklarierter Bezeichner
Ich werd weiter in meinem Wälzer weiterlesen.. hab jez noch ca 700 Seiten vor mir.
Falls jmd doch noch eine Lösung hat -die er selbst erfolgreich kompiliert hat-
würde ich mich freuen, diesen zu bekommen.THX - Heinek3n
-
Lies doch bitte mal mehr als die ersten drei Sätze der Beiträge:
Janjan schrieb:
"stdafx.h" musst du einbinden, weil du das vorkompiliere von Headerdateien in Visual Studio aktiviert hast für dein Projekt. Schlechte Idee. Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".
Ich klinke mich hiermit aus der Diskussion aus. Manche Leute wollen einfach nicht geholfen werden.
-
Der Code von SeppJ auf Seite 2 ist einwandfrei kompilierbar. Die einzige Änderung, die du machen musst, ist #include "stdafx.h" ganz oben einzufügen (bzw. wieder zu 'entauskommentieren'), wenn präkompilierte Header bei dir eingeschaltet sind (was offensichtlich der Fall ist). Ich garantiere dir, dass du, wenn du diesen Code 1:1 übernimmst und meinen Rat bzw. präkompilierte Header befolgst, das Programm übersetzen kannst.
-
Habe den Code von SeppJ übernommen und laut matze [ #include "stdafx.h" ] über
[ #include <iostream> ] eingefügt.Jetzt schmeisst er mir noch EINEN Fehler raus :
fatal error C1083: Datei (Include) kann nicht geöffnet werden: "stdafx.h": No such file or directory
Hiernochmal mein aktueller Code:
#include "stdafx.h" #include <iostream> using namespace std; int add (int a, int b) { int c = a + b; return c; } int Sub (int a, int b) { int c = a - b; return c; } int Mal (int a, int b) { int c = a * b; return c; } int Div (int a, int b) { int c = a / b; return c; } int main () { cout << "Wilkommen zum Mathe-Programm, geschrieben von Christian ! \n"; cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"; cout << "Geben Sie die erste Zahl ein ! \n"; int Zahl1; cin >> Zahl1; cout << "Geben Sie nun die zweite Zahl ein ! \n"; int Zahl2; cin >> Zahl2; cout << "Wert1 = " << Zahl1 << " \n"; cout << " Wert2 = " << Zahl2 << "\n"; cout << "\n"; cout << "Bitte geben Sie die Rechenoperation ein !\n"; cout << "+++++++++++++++++++++++++++++++++++++++++\n\n"; cout << "Beide Zahlen addieren, also Zahl 1 plus Zahl 2 = 1\n"; cout << "Zahlen subtrahieren, also Zahl 1 minus Zahl 2 = 2\n"; cout << "Zahlen multiplizieren, also Zahl 1 mal Zahl 2 = 3\n"; cout << "Zahlen dividieren, also Zahl 1 durch Zahl 2 = 4\n"; cout << "-----------------------------------------------\n\n"; cout << "Ihre Eingabe ... : "; int op; cin >> op; // Das ist >> und nicht << if (op == 1) { cout << "Hier Ihr Ergebniss!\n"; cout << add (Zahl1, Zahl2); cout << "\n\n\n"; } else if (op == 2) { cout << "Das ist Ihr Ergbniss!\n"; cout << Sub (Zahl1, Zahl2); cout << "\n\n\n"; // Du meinst wohl dreimal newline, nicht n und zweimal newline } else if (op == 3) { cout << "Dein Ergebniss Du Lappen!\n"; cout << Mal (Zahl1, Zahl2); cout << "\n\n\n"; // Siehe oben } else if (op == 3) { cout << "Kannst das nicht im Kopf, Du Flachzange?\n"; cout << Div (Zahl1, Zahl2); cout << "\n\n\n"; // Siehe oben } else if (op < 4) { cout << "Du bist zu blöd zum scheissen, nochmal Neustarten!\n"; } cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"; cout << "Danke dass Sie meinen Rechner benutzt haben. Sie sind zu dumm zum Kopfrechnen!\n"; cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"; return 0; }
-
Entweder du benutzt vorkompilierte Header oder nicht. Also...
Entweder das:
- vorkompilierte Header in den Projekt-Settings einstellen
- stdafx.h inkludierenoder das:
- vorkompilierte Header in den Projekt-Settings ausstellen
- stdafx.h nicht inkludierenDu scheinst die zwei Wege gerne zu mischen.
Das wurde aber alles schon gesagt.
-
Bin den Weg gegangen:
Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".
Ist das der un-vorkompilierte Header ?
Bzw: Was ist ein Vorkompilierter Header...Eine bitte habe ich noch: Bitte setzt mir doch mal den Code so auf, dass er in Visual C++ 2008 funzt..
ansonsten muss ich mich auch ausklinken und erstmal büffeln.... hätte nur so gerne ein Prog das funzt um meiner Frau zu erklären worum es im Prinzip geht.
Danke - Christian
-
Win32 Konsolenanwendung - Empty Project
Dann nur noch #include <iostream> und using namespace std;
Und dann dein Code, das sollte funzen.
-
Heinek3n schrieb:
Bin den Weg gegangen:
Am besten du erstellst ein neues leeres Win32 Console Application Projekt, und machst einen Haken bei "Empty project".
Ist das der un-vorkompilierte Header ?
Bzw: Was ist ein Vorkompilierter Header...Eine bitte habe ich noch: Bitte setzt mir doch mal den Code so auf, dass er in Visual C++ 2008 funzt..
ansonsten muss ich mich auch ausklinken und erstmal büffeln.... hätte nur so gerne ein Prog das funzt um meiner Frau zu erklären worum es im Prinzip geht.
Danke - Christian
Deine Projektsettings kann hier leider keiner verändern. Das kannst du aber selbst machen:
- Rechtsklick auf das Projekt in der Projektmappe => Eigenschaften
- Konfigurationseigenschaften => C/C++ => Vorkompilierte Header
- Und hier vorkompilierte Header verwenden oder eben nicht verwendenDu kannst aber natürlich auch ein leeres Projekt erstellen.
Abgesehen von dieser Geschichte ist dein Code kompilierbar.
-
Oder einfach lesen was dir geschrieben wird............................................
-
Nein, das geht ja nicht, er ist ja erst seit 10 Tagen dabei!
-
Dies soll jetzt im allgemeinen den Threadstarter helfen und nicht explizit das "Problem" lösen:
Also einmal:
Was ist Namespace überhaupt?
http://tutorial.schornboeck.net/namespace.htm
Vorkompilierte Header:
http://www.floriankirsch.de/c++/vorkompilierteheader.htmlAusserdem in den Raum zu stellen das ein Code nicht funktioniert wird nicht gern von Entwicklern gelesen, deswegen solltest du sowas nicht schnell sagen. Dies soll dir nur helfen das deine zukünftigen Fragen auch beantwortet werden.
Es wird auch gern gesehn, dass du selber recherichrt hast.