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

10.09.2015, 11:56

Einbinden von .h und/oder .cpp files , wie?

Guten Tag
und hallo an alle :)

Ich bin relativ neu im Programmieren.
Mir leuchtet etwas nicht ein und hab dazu auch nirgends bei google was gefunden.
Selbst im Video2Brain c++ Lehrgang wurde das in 10h nicht erklärt :D
(Und mein c++ buch etc kommen erst noch)

Wie binde ich der übersicht halber weitere cpp bzw dateien ein.
Header dateien includier ich (#include <blabla.h> oder #include "blabla.h" ) etc.

Nun würde ich aber gerne meine main.cpp etwas ausdünnen. D.h. z.b. das alles was mit spiel-Char zu tun hat auslagern.
Damit ich das besser warten bzw ändern kann (Ist ja auch besser zu finden)

Ich hab nur das Problem, wenn ich jetzt eine character.cpp mache und dazu eine character.h . Wie erkennt meine main.cpp das jetzt das zeug in der character.cpp liegt und nicht mehr im eigenen codeblock? (Variablen Sichtbarkeit und so )

Schonmal danke für die Antworten und die Hilfe :)

Lg Ruben aka Aspect

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

10.09.2015, 12:23

Verwendest du eine IDE? In dem Fall wird diese dir eine Möglichkeit bieten, deinem Projekt eine neue .cpp Datei hinzuzufügen. Rein prinzipiell funktioniert das so, dass jede .cpp Datei separat durch den Compiler in jeweils ein Object File kompiliert wird. Am Ende werden alle Object Files zusammen in den Linker geworfen, der diese zu einer fertigen Binary zusammenbaut.

Dein main.cpp inkludiert die character.h, in der du Deklarationen stehen hast. Der Compiler weiß dann beim Kompilieren von main.cpp, dass es die in character.h deklarierten Dinge irgendwo gibt und um was es sich dabei handelt. Für bestimmte Formen der Verwendung, wie z.B. das Aufrufen einer Funktion, sind diese Informationen ausreichend (um eine Funktion aufzurufen, muss der Compiler nur wissen, dass es diese Funktion irgendwo gibt und wie ihre Signatur aussieht, der genaue Inhalt der Funktion ist dafür nicht relevant). Der Compiler kann den Code von main.cpp dann in ein Object File kompilieren, das Verweise auf die in main.cpp verwendeten Dinge aus character.h enthält. Unabhängig davon wird auch character.cpp in ein Object File kompiliert. Am Ende gehen alle Object Files in den Linker, welcher alle zusammen in ein Binary packt und dabei alle offenen Verweise auflöst (der Linker sieht, was sich in allen Object Files befindet und kann daher alle Stellen, an denen im Maschinencode von main.cpp auf Dinge verwiesen wird, die in character.cpp definiert sind, diese Verweise durch die Adressen der entsprechenden Dinge im Maschinencode von character.cpp ersetzen).

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »dot« (10.09.2015, 12:40)


3

10.09.2015, 12:44

Ich benutze Visual Studio 2015 Community.
Also wenn ich das jetzt richtig verstanden habe
ich includiere die weiteren header dateien in meiner main einfach und die cpp dateien werden dann automatisch mit reingenommen über die deklarationen in der header und der rest macht der Compiler und Linker?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

10.09.2015, 12:52

Du musst deine .cpp Dateien alle zum selben Projekt hinzugefügt haben, damit Visual Studio sie auch alle durch den Compiler und in den Linker schickt, das Vorhandensein irgendeiner Headerdatei tut dabei nichts zur Sache. Du könntest die notwendigen Deklarationen für alle Dinge, die wo anders definiert sind, theoretisch auch einfach direkt in main.cpp reinschreiben; man verwendet in der Regel aber einen Header, weil man die selben Deklarationen oft in mehreren .cpp Files braucht und das dann einfacher ist, als sie überall per Hand hinzukopieren (#include tut effektiv nichts anderes, als Text wo hinzukopieren)... ;)

5

10.09.2015, 17:31

Ok,
super dann hab ich das verstanden :)
Vielen dank nochmal :)

Werbeanzeige