Befehle installieren ?
-
Hi,
was verstehst du unter "Befehle"? Also "normal" musst du nix extra installieren, außer du willst mit einer anderen Bibliothek wie z.B. "Boost" arbeiten, aber ich glaub kaum das du das meinst.
-
CStoll schrieb:
Was für Befehle meinst du denn? Die meisten Funktionen in C(++) sind auf irgendwelche Headerdateien (und LIBs) verteilt, die du in dein Programm einbinden mußt per "#include <...>"
Aber dann verstehe ich einiges nicht... also über das #includen habe ich in meinem Buch nicht gefunden.
Wie tut man eigentlich eigene header:1. Coden?
2. von datei.cpp inkludieren?
3. emm... weiß nichtEEK schrieb:
Hi,
was verstehst du unter "Befehle"? Also "normal" musst du nix extra installieren, außer du willst mit einer anderen Bibliothek wie z.B. "Boost" arbeiten, aber ich glaub kaum das du das meinst.
Sicherlich will ich nicht mit "BOOST" nicht arbeiten,vielleicht irgendwannmal
Mfg. Martin
-
In C/C++ gibt es keine "Befehle" sondern Anweisungen und Funktionen.
Eine Funktion ist zum Beispiel:int summe( int a, int b ) { return a + b; }
Möchte ich nun diese Funktion verwenden, so kann ich sie aufrufen. Ein vollständiges Programm sieht dann so aus:
#include <iostream> // die Datei "iostream" einbinden für cin und cout using namespace std; // Namensraum "std" öffnen int summe( int a, int b ); // Deklaration der Funktion summe int main( ) // Eintrittsfunktion in unser Programm { int x, y; // x und y als Variablen des Typs int (Integer) Deklarieren. cout << "Erste Zahl eingeben: "; // "Erste Zahl eingeben: " auf dem Bildschirm ausgeben cin >> x; // x von der Tastatur einlesen cout << "Zweite Zahl eingeben: "; cin >> y; int z = summe( x, y ); // z Deklarieren und mit dem Ergebnis von summe( x, y ) initialisieren. cout << "Summe aus " << x << " und " << y << " beträgt " << z << endl; } // Programm endet hier. int summe( int a, int b ) // Definition der Funktion summe { return a + b; }
Hat man nun mehrere Funktionen kann dies recht schnell unübersichtlich werden. Um mehr Überblick bewahren zu können, kann man nun zum Beispiel summe "auslagern":
summe.h:
#ifndef SUMME_INCLUDED // ist ein sogenannter Includeguard. #define SUMME_INCLUDED SUMME_INCLUDED // Der Block von ifndef bis endif wird nur compiliert, falls // SUMME_INCLUDED nicht definiert wurde. Beim ersten Compiler- int summe( int a, int b ); // durchlauf wird nun SUMME_INCLUDED definiert und sorgt dafür, // daß dieser Block kein zweites Mal compiliert wird. #endif
summe.cpp:
#include "summe.h" int summe( int a, int b ) // Definition der Funktion summe { return a + b; }
main.cpp:
#include <iostream> #include "summe.h" using namespace std; int main( ) { int x, y; cout << "Erste Zahl eingeben: "; cin >> x; cout << "Zweite Zahl eingeben: "; cin >> y; int z = summe( x, y ); cout << "Summe aus " << x << " und " << y << " beträgt " << z << endl; }
Ist's nun klarer?
Greetz, Swordfish
-
Martin Braun schrieb:
CStoll schrieb:
Was für Befehle meinst du denn? Die meisten Funktionen in C(++) sind auf irgendwelche Headerdateien (und LIBs) verteilt, die du in dein Programm einbinden mußt per "#include <...>"
Aber dann verstehe ich einiges nicht... also über das #includen habe ich in meinem Buch nicht gefunden.
Wie tut man eigentlich eigene header:1. Coden?
2. von datei.cpp inkludieren?
3. emm... weiß nichtDu erstellst dir eine "Eigene Datei" z.B. MeineHeader.h und bindest diese mit
#include "MeineHeader.h"
dann ein.
Martin Braun schrieb:
EEK schrieb:
Hi,
was verstehst du unter "Befehle"? Also "normal" musst du nix extra installieren, außer du willst mit einer anderen Bibliothek wie z.B. "Boost" arbeiten, aber ich glaub kaum das du das meinst.
Sicherlich will ich nicht mit "BOOST" nicht arbeiten,vielleicht irgendwannmal
Mfg. Martin
War ja auch nur ein Beispiel
-
Also ich habe mir das durchgelesen und sehe viel positives,nur eins nicht.
Es geht noch immer um den header:1. Die HeaderDatei heisst header.h und was muss ich darein schreiben?
2. Meine Datei datei.cpp will ich mit #include "header.h" inkludieren,wie geht das?Mfg. florian
-
Ne, martin eine .cpp kannst du nicht mit einer .h includieren. In deinem Header stehen Deklarationen (= Bekanntmachungen) und in einer Quellcodedatei Definitionen. Durch die Deklarartionen der Eingebundenen header, weiß der Compiler, was existiert und was nicht.
Greetz, Swordfish
-
Swordfish schrieb:
Ne, martin eine .cpp kannst du nicht mit einer .h includieren. In deinem Header stehen Deklarationen (= Bekanntmachungen) und in einer Quellcodedatei Definitionen. Durch die Deklarartionen der Eingebundenen header, weiß der Compiler, was existiert und was nicht.
Greetz, Swordfish
Also ich habe es mal so versucht.
header.h:#include<iostream> using namespace std;
plus.cpp:
#include "header.h" int main() { cout<<"Hallo"; }
Warum geht das nicht?
Mfg. Martin
-
Martin Braun schrieb:
Swordfish schrieb:
Ne, martin eine .cpp kannst du nicht mit einer .h includieren. In deinem Header stehen Deklarationen (= Bekanntmachungen) und in einer Quellcodedatei Definitionen. Durch die Deklarartionen der Eingebundenen header, weiß der Compiler, was existiert und was nicht.
Greetz, Swordfish
Also ich habe es mal so versucht.
header.h:#include<iostream> using namespace std;
plus.cpp:
#include "header.h" int main() { cout<<"Hallo"; }
Warum geht das nicht?
Mfg. Martin
Was heißt wieso geht das nicht?
:schland: wird Weltmeister :p
-
evilissimo schrieb:
Martin Braun schrieb:
Swordfish schrieb:
Ne, martin eine .cpp kannst du nicht mit einer .h includieren. In deinem Header stehen Deklarationen (= Bekanntmachungen) und in einer Quellcodedatei Definitionen. Durch die Deklarartionen der Eingebundenen header, weiß der Compiler, was existiert und was nicht.
Greetz, Swordfish
Also ich habe es mal so versucht.
header.h:#include<iostream> using namespace std;
plus.cpp:
#include "header.h" int main() { cout<<"Hallo"; }
Warum geht das nicht?
Mfg. Martin
Was heißt wieso geht das nicht?
Also das war aber eine perfekte Antwort
Ja und wie geht das dann mit dem include´
-
Martin Braun schrieb:
Also das war aber eine perfekte Antwort
yup.
F: Sind Sie verheiratet?
A: Ja, seit 2 Jahren.
F: Warum nicht?Was heißt warum nicht?
-
Martin Braun schrieb:
evilissimo schrieb:
Martin Braun schrieb:
Swordfish schrieb:
Ne, martin eine .cpp kannst du nicht mit einer .h includieren. In deinem Header stehen Deklarationen (= Bekanntmachungen) und in einer Quellcodedatei Definitionen. Durch die Deklarartionen der Eingebundenen header, weiß der Compiler, was existiert und was nicht.
Greetz, Swordfish
Also ich habe es mal so versucht.
header.h:#include<iostream> using namespace std;
plus.cpp:
#include "header.h" int main() { cout<<"Hallo"; }
Warum geht das nicht?
Mfg. Martin
Was heißt wieso geht das nicht?
Also das war aber eine perfekte Antwort
Ja und wie geht das dann mit dem include´Definiere doch einfach mal geht nicht.
Compilierfehler, Keine Ausgabe, was geht nicht?
-
1. Das geht nicht, weil die Datei "header.h" vermutlich nicht vorhanden ist, d.h., sie ist entweder nicht geschrieben oder nicht im selben Ordner wie die Datei "main.c" (Datei, in der auch main() zu finden ist).
MfG, DeveLord
-
DeveLord schrieb:
1. Das geht nicht, weil die Datei "header.h" vermutlich nicht vorhanden ist, d.h., sie ist entweder nicht geschrieben oder nicht im selben Ordner wie die Datei "main.c" (Datei, in der auch main() zu finden ist).
MfG, DeveLord
Nein,DeveLord.
1. Befindet sich die Datei header.h auf dem Desktop
2. Existiert sie ^^
und
3. In der Datei plus.cpp befindet sich bei mir ein main(),dennoch aber komme ich nicht weiterIch habe mir heute was neues aus dem Buch beigebracht,nähmlich
std::string
also mein Wissen entwickelt sich aber schnell ^^
So Long
Martin
-
evilissimo schrieb:
Definiere doch einfach mal geht nicht.
Compilierfehler, Keine Ausgabe, was geht nicht?Greetz, Swordfish
-
Swordfish schrieb:
evilissimo schrieb:
Definiere doch einfach mal geht nicht.
Compilierfehler, Keine Ausgabe, was geht nicht?Greetz, Swordfish
Wie muss der Inhalt der .h - Datei lautet und der .cpp datei?
-
Martin Braun schrieb:
Swordfish schrieb:
evilissimo schrieb:
Definiere doch einfach mal geht nicht.
Compilierfehler, Keine Ausgabe, was geht nicht?Greetz, Swordfish
Wie muss der Inhalt der .h - Datei lautet und der .cpp datei?
Mir reißt gleich die Hutschnur...
Greetz, Swordfish
-
b00n.h
#pragma once class b00n { public: b00n(void) { } ~b00n(void) { } bool isB00n() { return true; } };
main.cpp
#include "b00n.h" int main(){ b00n martin; martin.isB00n(); return 0; }
alles klar?
:schland:
-
Hab hier mal ein Beispiel für die Modularisierung (inzwischen nicht mehr online) angefertigt, ich denke, da kann man relativ gut erkennen, "was wo hin muss". Allerdings ist mein Englisch geringfügig verbesserungswürdig
Aber auch schon die zwei Grafiken sollten weiterhelfen...
-
steff3 schrieb:
b00n.h
#pragma once class b00n { public: b00n(void) { } ~b00n(void) { } bool isB00n() { return true; } };
main.cpp
#include "b00n.h" int main(){ b00n martin; martin.isB00n(); return 0; }
alles klar?
:schland:Mit meinem Compiler funktioniert das ja garnicht...
Also ich habe das alles auf dem Desktop gespeichert und es geht nichttrodzdem Danke für die Hilfe.
proggaholic schrieb:
Hab hier mal ein Beispiel für die Modularisierung
angefertigt, ich denke, da kann man relativ gut erkennen, "was wo hin muss". Allerdings ist mein Englisch geringfügig verbesserungswürdig
Aber auch schon die zwei Grafiken sollten weiterhelfen...mfg
proggaholicDieser Schritt hat mich sehr erfreut,jedoch wie ich in selber probierte,also mit gleichem Inhalt,wurden nur zwei Warnungen gefunden(ist nicht schlimm) und das Programm startete nicht mal
Ich habe Code::Blocks
-
- Das Beispiel von steff3 funktioniert tadellos (BTW: das void in den Parameterlisten von c-tor und d-tor würd' ich weglassen
)
- Das Beispiel von proggaholic funktioniert ebenfalls, lässt sich mit 4 völlig zurecht geworfenen Warnungen compilieren. (@ proggaholic: Ich würd' in einem Beispiel Code verwenden, der uA. eine Bildschirmausgabe beinhaltet)
- Code:Blocks ist kein Compiler sondern ein IDE (Integrated Developement Environment).
Schön langsam glaub ich ja, wir werden veräppelt...
Greetz, Swordfish
- Das Beispiel von steff3 funktioniert tadellos (BTW: das void in den Parameterlisten von c-tor und d-tor würd' ich weglassen