Bioernus Geschrieben 30. Januar 2014 Geschrieben 30. Januar 2014 (bearbeitet) Hallo und entschuldigt bitte, dass ich für wahrscheinlich ein dummes Problem einen neuen Thread erstelle. Ich fange nächsten Montag eine schulische Umschulung zum FIAE an und soll mich sozusagen als Hausaufgabe mit dem Buch "Einstieg in Visual C++ 2008" von Andre Willms darauf vorbereiten, bin also noch ein blutiger Anfänger und mir fehlt derzeit noch ein Ansprechpartner. Aufgabe: Ich soll eine Funktion schreiben, die von drei eingegebenen Zahlen das Maximum ausgibt, was ansich nicht das Problem ist. Der Fokus liegt bei der Aufgabe darauf, wie man die Deklaration der F. und die Funktionen in unterschiedliche Dateien auslagert. Ich kriege nun einen nicht nachvollziehbaren Fehler, der sehr ärgerlich ist, weil ich ohne den zu lösen auch die Folgeaufgaben nicht machen kann. Warum Fehlt vor using (bzw. nach der include-Direktive?) ein Semikolon??? Edit: und warum in der Headerdatei eine geschweifte Klammer? :-) Bearbeitet 30. Januar 2014 von Bioernus Zitieren
pr0gg3r Geschrieben 30. Januar 2014 Geschrieben 30. Januar 2014 Da fehlt ein Semikolon in "bjoern1.h". Wahrscheinlich nach einem } Zitieren
Bioernus Geschrieben 30. Januar 2014 Autor Geschrieben 30. Januar 2014 (bearbeitet) ok, aber die headerdatei ist doch im prinzip nur der funktionskopf der funktion. und der sieht so aus: int bjoern1 (int, int, int) da kommen doch keinerlei geschweifte klammern oder ein Semikolon, oder? die Funktion sieht dann so aus: int bjoern1(int x, int y, int z) { if(x>y && x>z) return (x); else { if(y>z) return (y); else return (z); } } ist doch eigentlich auch alles dran, was ran muß? Edit: du hast recht, in der headerdatei ein semikolon, sry. sagt das buch auch. wer lesen kann usw. dankeschön :-)) Bearbeitet 30. Januar 2014 von Bioernus Zitieren
pr0gg3r Geschrieben 30. Januar 2014 Geschrieben 30. Januar 2014 Wie sieht die gesamte bjoern1.h aus? Zitieren
Bioernus Geschrieben 30. Januar 2014 Autor Geschrieben 30. Januar 2014 ist jetzt kompilierbar, s.o. headerdatei: int bjoern1 (int, int, int) -> jetzt mit semikolon hinter der klammer kompilierbar, und das mit der geschweiften klammer tritt einfach garnicht mehr auf... wär ich von alleine nicht drauf gekommen, 1000 Dank ^^ Zitieren
Logtetsch Geschrieben 7. April 2014 Geschrieben 7. April 2014 Um das ganze vielleicht noch etwas für die blutigen Anfänger zu verdeutlichen - die Präprozessordirektive "Include" macht nichts weiteres als den Inhalt der inkludierten Datei zu kopieren und ihn anschließen einfügen. Beispiel: //Datei: Test.h #pragma once // Compilerabhängig, ansonsten #ifndef, #define und #endif verwenden inline int Addiere(int nZahl1, int nZahl2){ return nZahl1 + nZahl2; } //Datei: Main.cpp #include "Test.h" //Code, welcher sich in der Datei 'Test.h' befindet, wird nun durch den //Präprozessor hier eingefügt. //inline int Addiere(int nZahl1, int nZahl2){ // return nZahl1 + nZahl2; //} int main(int argc, char** argv) { int nRes = Addiere(1,1); //........ } Ansonsten hast du noch die Möglichkeit, deine Funktionen in einer Header- Datei zu deklarieren und diese in einer externen .cpp Datei zu definieren. Beispiel: #pragma once inline void Addiere(int nZahl1, int nZahl2); // <- Deklaration ^ Funktion.h #include "Funktion.h" inline void Addiere(int nZahl1, int nZahl2){ // <- Definition return nZahl1 + nZahl2; } ^ Funktion.cpp #include "Funktion.h" ... main(...) { int nRes = Addiere(6,4); // Code } ^ Main.cpp Was du unter Umständen umbedingt meiden solltest, ist das benutzten von using namespace xxx. Führt häufig zu Komplikationen, sofern du eigene Funktionen, welche den gleichen Bezeichner haben wie bereits existente Funktionen im xxx- Namensraum, verwendest. In Einzelfällen kannst du folgendes Benutzen: using namespace std::cout; using namespace std::cin; Zitieren
Klotzkopp Geschrieben 8. April 2014 Geschrieben 8. April 2014 In Einzelfällen kannst du folgendes Benutzen: using namespace std::cout; using namespace std::cin; [/code] Das funktioniert so nicht. Eine Using-Direktive (using namespace ...) erlaubt den Zugriff auf den gesamten Inhalt eines Namespace ohne Angabe des Namespace. Eine Using-Deklaration (using ...) tut das mit einzelnen Namen im Namespace. Also: [code]using std::cout; using std::cin; Zitieren
Logtetsch Geschrieben 8. April 2014 Geschrieben 8. April 2014 Stimmt, mein Fehler. Habe den Beitrag zu schnell überflogen ^.^ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.