Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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? :-)

post-92945-1443044976509_thumb.png

Bearbeitet von Bioernus
Geschrieben (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 von Bioernus
Geschrieben

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 ^^

  • 2 Monate später...
Geschrieben

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;

Geschrieben
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;

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...