<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Projekte in Dateien aufteilen]]></title><description><![CDATA[<p>Ich dachte ich würde verstehen wie man Projekte auf mehrere Dateien aufteilt, aber irgendwie isses wohl doch nicht so. Ich weiß nie genau wo ich nun was includieren muss, und wo es dann gültig ist.</p>
<p>Wie funktioniert das normalerweise? Sagen wir ich hab ein Projekt, in dem ich Direct3D verwende. Nun dachte ich mir die Aufteilung wäre in etwa so:</p>
<p>GameMain.cpp<br />
GameMain.h</p>
<p>In GameMain.h includiere ich die ganzen Standardheader wie &lt;windows.h&gt; und<br />
&lt;d3d9.h&gt;, Funktionsdeklarationen und die globalen Directx pointer wie<br />
LPDIRECT3DDEVICE9 d3ddevice usw.</p>
<p>In GameMain.cpp kommt WinMain() usw. und es wird GameMain.h includiert.</p>
<p>Und dann für alle Funktionen und Klassen wieder jeweils ne .cpp und .h.</p>
<p>Sagen wir nun will ich eine Funktion renderFrame() einfügen, dafür erstell ich renderFrame.cpp und .h.</p>
<p>Stimmt dann folgendes? :</p>
<p>In renderFrame.h kommt die Deklaration von renderFrame().</p>
<p>In renderFrame.cpp includiere ich renderFrame.h und schreibe den<br />
Quellcode der Funktion renderFrame().</p>
<p>Muss ich renderFrame.h in GameMain.cpp includieren? Oder in GameMain.h?</p>
<p>Muss ich GameMain.h in renderFrame.h includieren? Oder in renderFrame.cpp?</p>
<p>Egal wie ich es versuche aufzuteilen, die renderFrame() Funktion findet dann<br />
viele Dinge nicht (zum Beispiel die globalen Directx pointer die ich in GameMain.h deklariert habe).</p>
<p>Irgendwie fehlt immer irgendeiner Funktion etwas.<br />
Ich weiß es ist schon etwas lächerlich und ich sollte eigentlich selber draufkommen, aber vielleicht kann mir doch jemand nen Tipp geben wie größere Projekte normalerweise aufgeteilt werden, und wo man was deklariert und inkludiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173146/projekte-in-dateien-aufteilen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 04:35:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173146.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Feb 2007 12:42:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 12:42:28 GMT]]></title><description><![CDATA[<p>Ich dachte ich würde verstehen wie man Projekte auf mehrere Dateien aufteilt, aber irgendwie isses wohl doch nicht so. Ich weiß nie genau wo ich nun was includieren muss, und wo es dann gültig ist.</p>
<p>Wie funktioniert das normalerweise? Sagen wir ich hab ein Projekt, in dem ich Direct3D verwende. Nun dachte ich mir die Aufteilung wäre in etwa so:</p>
<p>GameMain.cpp<br />
GameMain.h</p>
<p>In GameMain.h includiere ich die ganzen Standardheader wie &lt;windows.h&gt; und<br />
&lt;d3d9.h&gt;, Funktionsdeklarationen und die globalen Directx pointer wie<br />
LPDIRECT3DDEVICE9 d3ddevice usw.</p>
<p>In GameMain.cpp kommt WinMain() usw. und es wird GameMain.h includiert.</p>
<p>Und dann für alle Funktionen und Klassen wieder jeweils ne .cpp und .h.</p>
<p>Sagen wir nun will ich eine Funktion renderFrame() einfügen, dafür erstell ich renderFrame.cpp und .h.</p>
<p>Stimmt dann folgendes? :</p>
<p>In renderFrame.h kommt die Deklaration von renderFrame().</p>
<p>In renderFrame.cpp includiere ich renderFrame.h und schreibe den<br />
Quellcode der Funktion renderFrame().</p>
<p>Muss ich renderFrame.h in GameMain.cpp includieren? Oder in GameMain.h?</p>
<p>Muss ich GameMain.h in renderFrame.h includieren? Oder in renderFrame.cpp?</p>
<p>Egal wie ich es versuche aufzuteilen, die renderFrame() Funktion findet dann<br />
viele Dinge nicht (zum Beispiel die globalen Directx pointer die ich in GameMain.h deklariert habe).</p>
<p>Irgendwie fehlt immer irgendeiner Funktion etwas.<br />
Ich weiß es ist schon etwas lächerlich und ich sollte eigentlich selber draufkommen, aber vielleicht kann mir doch jemand nen Tipp geben wie größere Projekte normalerweise aufgeteilt werden, und wo man was deklariert und inkludiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227364</guid><dc:creator><![CDATA[Mahren]]></dc:creator><pubDate>Mon, 12 Feb 2007 12:42:28 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 12:49:46 GMT]]></title><description><![CDATA[<p>Also prinzipiell hast du dann tatsächlich einfach kein schönes Design, wenn du ständig von einer Datei zur nächsten Sachen inkludieren musst, und das ganze dann<br />
auch wieder vice versa. Da solltest du dann dein Design mal überdenken.</p>
<p>Aber prinzipiell hast du recht... in eine Headerdatei kommen nur die Deklarationen (also Deklaratinen von Klassen und Funktionen), und in der cpp Datei werden diese dann implementiert. Wenn du dann dazu noch andere externe Dateien benötigst dann solltest du die nach Möglichkeit immer erst in der cpp Datei inkludieren und nicht schon in der Headerdatei. Ausser es lässt sich natürlich nicht vermeiden.<br />
Wenn du globale Variablen irgendwo brauchst die in einer cpp Datei erstellt wurden (Variablen erstellt man normalerweise nicht in Headerdateien), dann kannst du diese ganz oben in deinem Programmcode mit dem Schlüsselwort &quot;extern&quot; deklarieren und dann benutzen. Dann weiß der Compiler, dass die bereits wo anders deklariert wurden.</p>
<p>Aber wie gesagt, bei dir lässt das eher auf schlechtes Design schließen, wenn du sowas massenhaft brauchst. Man kommt natürlich nicht immer drum rum, aber man kann es schon weitestgehend vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227368</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Mon, 12 Feb 2007 12:49:46 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 12:52:29 GMT]]></title><description><![CDATA[<p>Mahren schrieb:</p>
<blockquote>
<p>In renderFrame.h kommt die Deklaration von renderFrame().</p>
<p>In renderFrame.cpp includiere ich renderFrame.h und schreibe den<br />
Quellcode der Funktion renderFrame().</p>
</blockquote>
<p>Bis dahin passt es auf jeden Fall noch.</p>
<blockquote>
<p>Muss ich renderFrame.h in GameMain.cpp includieren? Oder in GameMain.h?</p>
<p>Muss ich GameMain.h in renderFrame.h includieren? Oder in renderFrame.cpp?</p>
</blockquote>
<p>Das kommt darauf an, wer welche Definitionen benötigt. Das heißt, für diese Fragen gibt es auch keine allgemeingültige Antwort.<br />
(und im Zweifelsfall mußt du gegenseitige Includes auflösen, indem du z.B. Forward-Deklarationen verwendest oder die GameMain.h in zwei Teile aufteilst</p>
<blockquote>
<p>Egal wie ich es versuche aufzuteilen, die renderFrame() Funktion findet dann viele Dinge nicht (zum Beispiel die globalen Directx pointer die ich in GameMain.h deklariert habe).</p>
</blockquote>
<p>Diese Pointer mußt du dann natürlich an der Stelle eingebunden haben, wo sie benötigt werden (übrigens solltest du sie in der .h nur als 'extern' deklarieren und in der .cpp anlegen) - umgekehrt benötigst du die renderFrame() Deklaration spätestens dort, wo du sie verwenden willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227373</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 12 Feb 2007 12:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 13:01:56 GMT]]></title><description><![CDATA[<p>Danke schonmal, das hilft mir definitiv weiter.</p>
<p>Sollte ich vielleicht der renderFrame() Funktion einfach die Zeiger die dort gebraucht werden mit übergeben, wäre das eine gescheite Lösung?</p>
<p>Also lieber mit extern, oder gleich der Funktion die Zeiger mitgeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227378</guid><dc:creator><![CDATA[Mahren]]></dc:creator><pubDate>Mon, 12 Feb 2007 13:01:56 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 13:03:16 GMT]]></title><description><![CDATA[<p>Mein Problem ist bei sowas eben oft dass ich einfach nicht weiß wie es normalerweise üblich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227380</guid><dc:creator><![CDATA[Mahren]]></dc:creator><pubDate>Mon, 12 Feb 2007 13:03:16 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 13:13:15 GMT]]></title><description><![CDATA[<p>Mahren schrieb:</p>
<blockquote>
<p>Sollte ich vielleicht der renderFrame() Funktion einfach die Zeiger die dort gebraucht werden mit übergeben, wäre das eine gescheite Lösung?</p>
</blockquote>
<p>Ja, das wäre eine bessere Lösung (und zwar nicht nur für diese eine Funktion, sondern für das gesamte Programm - globale Variablen solltest du (wann immer möglich) vermeiden.</p>
<p>PS: Es gibt kein standardisiertes &quot;übliches Vorgehen&quot;, jeder Programmierer hat so seine eigene Art, an ein größeres Projekt ranzugehen und es zu zerlegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227386</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 12 Feb 2007 13:13:15 GMT</pubDate></item><item><title><![CDATA[Reply to Projekte in Dateien aufteilen on Mon, 12 Feb 2007 13:16:00 GMT]]></title><description><![CDATA[<p>Ok subba, danke nochmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Frisch ans Werk ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1227390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1227390</guid><dc:creator><![CDATA[Mahren]]></dc:creator><pubDate>Mon, 12 Feb 2007 13:16:00 GMT</pubDate></item></channel></rss>