[C++] Problem mit Konstanten

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich bin in meinem C++ Kurs inzwischen bei den Konstanten gelandet. :D
Normalerweise kopiere ich die Source from Beispiel in meine Entwicklungsumgebung (Dev-C++) und ändere das Beispiel oder schreibe es um. :daumen:

folgende Source:

Code:
Include-Datei myinc.h

const float PI = 3.1416F;

Modul main.cpp

#include <iostream>
#include "myinc.h"
using namespace std;

int main ( )
{
    cout << "Pi hat den Wert " << PI << endl;
}

Modul mod1.cpp

#include <iostream>
#include "myinc.h"
using namespace std;

void PrintIt ( )
{
    cout << "Pi hat den Wert " << PI << endl;
}

Meine Fragen:

  • Include-Datei myinc.h ganz oben, sollte das nicht //Include-Datei myinc.h sein?
  • Werden Konstanten vor #include definiert?
  • #include "myinc.h" .. dachte es wäre #include <...>
  • Wenn ich #include <myinc.h> mache, kommt "...no such file or directory"

Danke schonmal. :)
 
Include-Datei myinc.h ganz oben, sollte das nicht //Include-Datei myinc.h sein?
EDIT: siehe nächstes Posting

Werden Konstanten vor #include definiert?
Ist eigentlich egal, hauptsache, sie werden definiert, bevor du sie benutzt. Aber bei gutem Stil, kommen normalerweise die includes zu allererst

  • #include "myinc.h" .. dachte es wäre #include <...>
  • Wenn ich #include <myinc.h> mache, kommt "...no such file or directory
Bei #include "foo" sucht der Präprozessor im aktuellen Verzeichnis nach foo und bei #include <foo> sucht er im Include-Verzeichnis des Compilers, du müsstest also den Pfad, wo das file liegt, noch per -I an den gcc übergeben.
 
Zuletzt bearbeitet:
Es funktioniert ja beides nicht, kann ich diese Datei irgendwo bekommen?
Oder denke ich da in eine ganz falsche Richtung?
 
EDIT:

das kommt in die myinc.h:

const float PI = 3.1416F

und der Rest in die main.cpp/mod1.cpp, steht ja auch jeweils drüber.
 
Zuletzt bearbeitet:
Also ich brauche insgesamt 3 Dateien um den Code auszuführen?

Den Unterschied zwischen den beiden letzten verstehe ich nicht,
oben wird die include datei erstellt, okay, aber wieso unten 2x fast das selbe? :freak:

mfg, byte
 
Das ist wohl so in dem Howto gewollt, damit du siehst, dass du die in der Headerdatei deklarierte Konstante überall, wo du den Header inkludierst, benutzen kannst.
 
Code:
#include <iostream>
#include "myinc.h"
using namespace std;

void PrintIt ( )
{
    cout << "Pi hat den Wert " << PI << endl;
    getchar();
}

[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status


Was sagt mir den diese Fehlermeldung? :(

Danke, byte
 
Wenn dass deine "main.cpp" ist -> es muss auch eine "int main()" Funktion drinnen sein. Wenn nciht würd ich mal überprüfen, ob du ne richtige Konsolenanwendung erstellt hast, und nciht irgendein anderes Projekt.
 
@byte_head
Hast du denn irgendwo eine "int main()"? Wenn nicht, dann erwartet das Programm wohl eine "int WinMain(...)" (Danach sieht der Fehler sowieso aus). -> Du hast eine Windows-Anwendung statt einer Konsolenanwendung erstellt.
 
Nein, habe ich nicht, aber der Autor von dem Tut wird ja wohl keinen Fehler gemacht haben... *confused*
 
@byte_head
Wenn ein Programm gestartet wird, dann wird sozusagen seine "int main()"-Funktion ausgeführt. Wenn die nciht da ist, gibts nix zu tun... und der Compiler meckert.
 
Zurück
Oben