Include Dateien einbinden

OP #1129099
was muss ich beachten wenn ich in meinem Programm selberstellte Include 
Dateien einbinden will.
Konkretes Beispiel..
Ich habe eine Datei mit dem Namen TEXT.h in der einfach nur steht: cout 
<< "gib diesen verdammten Text endlich aus" ;

Versuche ich diese Datei mittels Include in Programm einzubinden mit 
include "Text.h" (Datei steht im Verzeichniss wo auch das Programm ist)
will das irgendwie nicht so recht gelingen.
Persönliche Seite
Die Anweisung steht so wie von dir angegeben nicht in einer Funktion 
drin. Sie steht "im leeren Raum".

Es ist auch gute Programmierpraxis wenn man keine Anweisungen in 
Includedateien packt. Deklarationen gehören in *.h Includedateien. 
Definitionen und Anweisungen gehören in *.c bzw. *.cpp Dateien.
OP
Es geht ja jetzt nur um das verstehen des einbindens.
Falls es weiterhilft der Compiler gibt folgende Meldung aus:

17 C:\Dev-Cpp\includesinus.cpp In file included from 
C:\Dev-Cpp\includesinus.cpp
12 C:\Dev-Cpp\TEXT.h expected constructor, destructor, or type 
conversion before '<<' token
12 C:\Dev-Cpp\TEXT.h expected `,' or `;' before '<<' token
(Firma: DB1FW) Persönliche Seite
Überlege es Dir mal folgendermassen.

ein #include wird vom Preprozessor gemacht. Der eigentlich compiler 
bekommt das gar nicht mit.

Die kannst Dir vorstellen, dass der Preprozessor dort wo "#include 
<xxx.h>" steht, wirklich den Inhalt der Datei xxx.h in Deinen Sourcecode 
hineinkopiert.

Du hast z.B.
1
#include "TEXT.h"
2

3
int  main(void)
4
{
5
   ....
6
}

daraus wird
1
cout << "gib diesen verdammten Text endlich aus" ;
2

3
int  main(void)
4
{
5
   ....
6
}

Und - wie Stefan schrieb - die "cout" Anweisung steht im Nirwana.

In die .h Datei soll nur das rein, was an der Stelle, an der das 
#include steht, auch hin dorf und Sinn macht.


Natuerlich könntest Du so was machen :
1
int  main(void)
2
{
3
#include "TEXT.h"
4

5
   ....
6
}

Würde wohl gehen -
aber das ist nicht der Sinn von .h Dateien. Das macht man nicht.
OP
das dass wenig Sinn macht ist mir schon in dem Fall klar. Ich versuche 
hier nur ein Beispiel durzuarbeiten was in einem Buch beschrieben ist 
(natürlich nicht mir dem Text da oben ;-) ). Ich habe die Include 
Anweisung in der Main Funktion, aber irgendwie macht das der Compiler 
nichtmit, und bricht mit der obrigen Fehlermeldung ab. Mir geht es 
momentan mehr darum wo da der Fehler liegt. Ob das cout in der Text.h 
jetzt Sinn macht oder nich, soll jetz mal beiseite gestellt werden. Sinn 
macht die Include Text.h mit sicherheit nicht.
Ingo Laabs wrote:

> nichtmit, und bricht mit der obrigen Fehlermeldung ab. Mir geht es
> momentan mehr darum wo da der Fehler liegt.

Der Fehler liegt daran, dass du noch nicht verstehst, wie das 
Zusammenspiel von Präprozessor und eigentlichem Compiler vonstatten 
geht.

> Ob das cout in der Text.h
> jetzt Sinn macht oder nich, soll jetz mal beiseite gestellt werden.

Genau darum gehts aber.
Die Ausgabeanweisung macht an dieser Stelle absolut keinen Sinn und ist 
dort auch nicht erlaubt. Es spielt jetzt keinerlei Rolle, ob du die 
Ausgabeanweisung direkt in deinem includesinus.cpp drinnen stehen hast, 
oder ob die Anweisung über einen #include reingezogen wird. Letztendlich 
sieht der Compiler eh in beiden Fällen dasselbe: Eine Anweisung die 
nicht in einer Funktion enthalten ist.

Und da der Compiler davon ausgeht, dass du das weißt und keinen dummen 
Fehler gemacht hast, versucht er dir in seiner Fehlermeldung irgendwas 
anzubieten, was die Situation retten könnte. Das du wirklich nur einen 
dummen Fehler gemacht hast, hat er nicht erkannt. Und drum ist die 
Fehlermeldung für dich ziemlich nichtssagend.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.