Startschwierigkeiten
-
Hallo Forum...
ich möchte jetzt auch endlich in die Welt der C-Programmierung einsteigen.
Jetzt habe ich mir Cygwin installiert und versuche das jetzt mal mit dem Compilieren.
Folgendes Programm:#include <iostream.h> main() { int int_wert; double double_wert; cout << " Bitte geben Sie einen Integer und einen Double-Wert ein: " << endl; cin >> int_wert >> double_wert; // Einlesen der Werte cout << "Es wurden die Werte ( " << int_wert << ", " << double_wert << ") eingegeben." << endl; return 0; }
Dann hab ich ein makefile dazu gebastelt:
Testprogramm: Test.o cc Test.o Test.o: Test.c iostream.h cc -c Test.c
wenn ich jetzt make ausführe (im Projektverzeichnis) bekomme ich folgende Meldung:
*** No rule to make target 'iostream.h', needed by Test.o. Stop.
Kann es sein, dass mir die Header-Datei fehlt ?
Wo müsste die zu finden sein ? (in welchem...irgendwie läuft das hier alles nicht.
Welche Umgebungsvariablen müssen sein und habe ich alles installiert, wes ich brauche, wenn ich die vorgeschlagen Installation von Cygwin ausführe ?
Auf cygwin.com ist u.a. vom kompilieren mit gcc test.c -o test.exe die Rede aber die Antwort von Cygwin ist bash: gcc: command noct found.
Das passt doch alles nicht....
-
Telefisch schrieb:
ich möchte jetzt auch endlich in die Welt der C-Programmierung einsteigen.
Bist du dir da sicher? Der Code sieht jedenfalls nach C++ aus. Dementsprechend solltest du auch test.c in test.cpp oder test.cc umbenennen, ansonsten ist das leicht verwirrend. Für den eigentlichen Übersetzungsprozess ist das allerdings kein Problem, sofern der Compiler entsprechend auf C++ Kompilierung eingestellt ist.
Telefisch schrieb:
wenn ich jetzt make ausführe (im Projektverzeichnis) bekomme ich folgende Meldung:
*** No rule to make target 'iostream.h', needed by Test.o. Stop.Du brauchst die Header nicht ins makefile zu schreiben. Header werden nicht kompiliert. Die werden vom Präprozessor vor der eigentlichen Kompilierung in die Quellcodedatei "kopiert". Alles was du deshalb machen musst, ist eine entsprechende #include Anweisung in die Quellcodedatei zu schreiben.
Telefisch schrieb:
Kann es sein, dass mir die Header-Datei fehlt ?
Durchaus möglich.
Telefisch schrieb:
Wo müsste die zu finden sein ?
Im Museum?
Telefisch schrieb:
...irgendwie läuft das hier alles nicht.
Zum einen liegt das daran, dass das Programm ansich fehlerhaft ist.
Die korrekte Header heisst <iostream> und nicht <iostream.h>.
main muss mit Rückgabetyp int definiert werden.
Klassen und Objekte der STL befinden sich im std Namensraum. Um diese zu benutzen, gibt es verschiedene Möglichkeiten.
ZB using Direktive#include <iostream> using namespace std;
Damit wird der komplette std Namensraum im aktuellen Namensraum sichtbar gemacht.
Oder using Deklaration#include <iostream> using std::cout; using std::cin; using std::endl;
Damit werden nur cout, cin, endl im aktuellen Namensraum sichtbar gemacht.
Oder explizit den Namensraum angebenstd::cout << " Bitte geben Sie einen Integer und einen Double-Wert ein: " << std::endl;
Was Cygwin betrifft, damit kenne ich mich leider nicht aus. Nur soviel sei gesagt, dass der Compiler das Include Verzeichnis der STL Header kennen muss. Ob man das jetzt über Compileroptionen oder Umgebungsvariablen einstellt, ist im Grunde egal. Man muss halt nur schauen, was unterstützt wird. Das gleiche gilt für den Linker und Libs.
-
Na, das ist ja prima, dass die diversen Tutorials offensichtlich falsch sind.
Wie muss denn das makefile aussehen ?
Wenn man sich uf tutorials nicht mal verlassen kann, wie soll man das dann lernen ?
-
Wenn ein solches Tutorial z.B. 10 Jahre alt ist (oder der Schreiber des Tut so zurück geblieben ist
), dann war es mal nicht falsch. iostream.h gab es damals ja inoffiziell. Erst 1998 wurde wirklich ein C++ Standard in der ISO-Norm definiert, an den sich eigentlich alle neuen Compiler halten. Und laut ISO heißt z.B. der iostream-Header halt ohne .h. Deshalb ist es wichtig, das du dich nach einem Tutorial umschaust, das sich an den ISO C++ Standard hält.
Schau dir mal folgendes Tutorial an:
http://tutorial.schornboeck.net/inhalt.htm
-
Telefisch schrieb:
Na, das ist ja prima, dass die diversen Tutorials offensichtlich falsch sind.
Naja, nicht komplett falsch, nur einfach sehr veraltet. Und aktuelle Compiler geben keine Garantie, dass sich diese veralteten Programme auch korrekt kompilieren lassen. Auch der aktuelle Standard stuft diese Sachen als 'deprecated' ein. Ich würde dir deshalb empfehlen, nach aktuellem Standard zu lernen. Dann bist du auf jeden Fall auf der sicheren Seite.
Telefisch schrieb:
Wie muss denn das makefile aussehen ?
So genau kann ich dir das momentan auch nicht beantworten. Makefiles können ziemlich komplex und kompliziert werden. Probier es einfach mal ohne Header
Testprogramm: Test.o cc Test.o Test.o: Test.c cc -c Test.c
Ansonsten versuch es über die Kommandozeile. Oder benutze eine IDE, welche du oben rechts unter [ Compiler ] finden kannst.
Telefisch schrieb:
Wenn man sich uf tutorials nicht mal verlassen kann, wie soll man das dann lernen ?
Leider gibt es immer noch jede Menge veralteter Tutorials. Für den Einstieg machst du mit denen von Volkard sicherlich nicht viel falsch (siehe hier). Die dürften aktuell sein. Ansonsten, wieder oben rechts, einfach mal unter [ Tutorials ] stöbern bzw auf das bereits Erwähnte zurückgreifen.
-
Ok, ich dank Euch vorerst.
Hab mir gestern Visual C++.Net bestellt.
Im allgemeinen kann man ja auf Mickrichsoft schimpfen aber solche Programme laufen in der Regel rund.
...werde mich jetzt mal mit den Tutorials beschäftigen.Gruß Carsten
-
Hallo nochmal...
da das mit der Lieferung von Visual C++ noch dauert würde ich gerne schonmal mit cygwin üben.
Kann mir jemand beim Makefile helfen ?
Ich hab hier nur die main.cpp und möchte daraus eine ausführbare Datei machen.Danke