Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.10.2008, 20:03

Frage zu #include: Listing 7.2

Hallo Leute,

ich habe eine Frage zu #include:

Ich verstehe die Anwendung in Listing 7.2 (Seite 188f) nicht ganz.

Es wird eine Datei namens "Listing 7.2.cpp" erstellt. Darin wird die Datei "Raumschiff.hpp" included. Außerdem wird eine Datei namens "Raumschiff.cpp" erstellt, auch darin wird die "Raumschiff.hpp" included.

Ich verstehe nicht, warum man in "Listing 7.2.cpp" die "Raumschiff.hpp" und nicht die "Raumschiff.cpp" included, das wäre doch irgendwie logischer.

Außerdem hab ich noch nicht ganz raus, warum man in der Raumschiff.cpp noch mal <iostream> included.

Bitte um Hilfe

Gruß
manu

2

13.10.2008, 20:11

Jede cpp Datei wid einzeln kompiliert. Die Deklaration (also die Headerdatei) sagt dem Kompiler nur, dass es diese Klasse irgendwo geben muss. Gibt es sie nicht, bekommst du einen Linkerfehler.

Der Vorteil ist, wenn du eine Datei 5 mal inklusdierst, muss sie nur 1 mal kompiliert werden, die headerdatei dient quasi als Verknüpfung mit denne der Linker dann dein Programm zusammensetzt.

Da jede cpp Datei einzeln und für sich kompiliert wird, muss sie auch alle Header die sie benötigt inkludieren.
Lieber dumm fragen, als dumm bleiben!

3

13.10.2008, 20:50

Danke, das hat mir erst mal geholfen :)

War da leider noch zu sehr an PHP orientiert, bei dem es ja sowas wie kompilieren nicht gibt :)

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

4

13.10.2008, 23:03

Aua, natürlich gibt es auch bei PHP Kompilierungen! Das macht bloß der Server mehr oder weniger automatisch für dich.

Und das dort angewendete Verfahren ist dem von C++ garnicht mal so unähnlich. Der Server fängt bei der angeforderten Datei an und durch diverse Includes in dieser sucht er den Code zum ausführen dann zusammen. Und nach dem Kompilieren gibt er dann ne Webseite aus.

C++ macht das gleiche für jede deiner Codedateien (in der Regel .c und .cpp), erstellt damit aber keine Webseite, sondern Objektdateien. Und diese Objektdateien werden dann zu einer .exe zusammengefasst.

Aber kompiliert und includiert wird in beiden Fällen!

5

14.10.2008, 11:29

Hallo,

das ist nicht richtig. PHP als Scriptsprache wird interpretiert und nicht kompiliert.

Ein include in PHP ist auch ein bisschen anders als in C++ - es wird lediglich der Inhalt der inkludierten Datei an genau dieselbe Stelle geklatscht, an der inkludiert wird. Es gibt keine Header, die an mehreren Stellen eingebunden werden.

Von daher ist die Frage schon berechtigt.

6

14.10.2008, 13:18

Beide nicht ganz richtig ;)
Zend bietet schon nen Präcompiler für php an der aus der Scriptsprache vor der Laufzeit ne Binary macht, allerdings hat das mit php selbst in der tat wenig zu tun.

Beim include wird der Inhalt übrigens nicht an der Stelle eingefügt (Das würde man merken wenn man ein include in einer Schleife mit einem dynamischen Includepfad aufrufen würde) sondern lediglich an dieser Stelle geparsed.

Werbeanzeige