<?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[Mehrfachdeklaration bei #include]]></title><description><![CDATA[<p>Da ich vor kurzem erst auf C++ umgestiegen bin, stehe ich gerade vor einem kleinem Problem.</p>
<p>Ich habe in meinem Projekt vier Dateien:<br />
- Matrix.h und Verlet.h enthalten Structs, die in<br />
- Matrix.cpp und Verlet.cpp gebraucht werden. Die .cpps enthalten einige Funktionen und inkludieren (Unwort des Jahres) jeweils ihre zugehörigen Header.</p>
<p>Da die Hauptdatei Verlet.cpp die Funktionen der Matrix.cpp benötigt, steht am Anfang der Verlet.cpp logischerweise ein #include &quot;Matrix.cpp&quot;</p>
<p>Versuche ich nun aber das ganze zu kompilieren, steht im BuildLog, dass jede Funktion der Matrix.cpp bereits in Matrix.obj definiert sei und bricht den Vorgang wegen doppelt definierten Symbolen ab.<br />
Wenn ich den Inhalt von Matrix.cpp in Verlet.cpp kopiere und kein #include benutze, funktioniert es fehlerfrei.<br />
Woran genau liegt das? Habe ich die Funktionsweise von #include falsch verstanden?<br />
Ich benutze Visual C++ 2008 Express Edition.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226180/mehrfachdeklaration-bei-include</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 02:57:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226180.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Oct 2008 12:01:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 12:01:45 GMT]]></title><description><![CDATA[<p>Da ich vor kurzem erst auf C++ umgestiegen bin, stehe ich gerade vor einem kleinem Problem.</p>
<p>Ich habe in meinem Projekt vier Dateien:<br />
- Matrix.h und Verlet.h enthalten Structs, die in<br />
- Matrix.cpp und Verlet.cpp gebraucht werden. Die .cpps enthalten einige Funktionen und inkludieren (Unwort des Jahres) jeweils ihre zugehörigen Header.</p>
<p>Da die Hauptdatei Verlet.cpp die Funktionen der Matrix.cpp benötigt, steht am Anfang der Verlet.cpp logischerweise ein #include &quot;Matrix.cpp&quot;</p>
<p>Versuche ich nun aber das ganze zu kompilieren, steht im BuildLog, dass jede Funktion der Matrix.cpp bereits in Matrix.obj definiert sei und bricht den Vorgang wegen doppelt definierten Symbolen ab.<br />
Wenn ich den Inhalt von Matrix.cpp in Verlet.cpp kopiere und kein #include benutze, funktioniert es fehlerfrei.<br />
Woran genau liegt das? Habe ich die Funktionsweise von #include falsch verstanden?<br />
Ich benutze Visual C++ 2008 Express Edition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607115</guid><dc:creator><![CDATA[Noobody]]></dc:creator><pubDate>Thu, 30 Oct 2008 12:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 12:03:24 GMT]]></title><description><![CDATA[<p>Google mal nach include guards</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607116</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Thu, 30 Oct 2008 12:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 12:12:50 GMT]]></title><description><![CDATA[<p>Soweit ich das verstehe, scheint das nicht mein Problem zu sein.<br />
Da der Code im Moment noch relativ klein ist und ich alles durchgegangen bin, bin ich mir ziemlich sicher, dass jeder Header und jede .cpp nur einmal eingebunden wird.<br />
Auch ein testweises #pragma once hat nichts gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607121</guid><dc:creator><![CDATA[Noobody]]></dc:creator><pubDate>Thu, 30 Oct 2008 12:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 12:25:33 GMT]]></title><description><![CDATA[<p>Noobody schrieb:</p>
<blockquote>
<p>Da die Hauptdatei Verlet.cpp die Funktionen der Matrix.cpp benötigt, steht am Anfang der Verlet.cpp logischerweise ein #include &quot;Matrix.cpp&quot;</p>
</blockquote>
<p>Dazu benötigst Du nur den matrix.h Header! Und nicht die ganze CPP! Das macht docj keinen Sinn.</p>
<p>Du benötigst die Deklaration (in der .h Datei) einer Funktion um sie zu verwenden. Nicht die Definition (in der .cpp Datei)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607131</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 30 Oct 2008 12:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 12:27:42 GMT]]></title><description><![CDATA[<p>Du hast da was falsch verstanden. In C++ werden nur die Header (.h , .hpp) eingebunden. Die .cpp's musst du nur mitlinken. (automatisch durch die IDE, oder per makefile).</p>
<p>Also du hast es dann in etwa so stehen:</p>
<p>matrix.hpp</p>
<pre><code class="language-cpp">//includeguards 
class matrix{}
</code></pre>
<p>matrix.cpp</p>
<pre><code class="language-cpp">#include &quot;matrix.hpp&quot;
matrix::matrix (){...}
</code></pre>
<p>Das gleiche machst du mit allen anderen hpp's und cpp's.<br />
Die Includeguards brauchst du, wenn du in der gleichen Übersetzungseinheit einen Header 2 mal inkludierst. Sprich in matrix.cpp und vlt. in Game.cpp., wobei in Game.cpp du SpielObjekt.hpp inkludierst, welches wiederum auch matrix.hpp inkludiert.<br />
Wenn du die nicht hast, wirst du, wegen der Verletzung der ODR (One Definition Rule) einen Compile Error bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607132</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 30 Oct 2008 12:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachdeklaration bei #include on Thu, 30 Oct 2008 14:35:44 GMT]]></title><description><![CDATA[<p>Oh, das habe ich in der Tat falsch verstanden.<br />
In der Sprache, die ich vorher benutzt habe, hat das ganze anders funktioniert, darum war es für mich logisch, .cpps auch einzubinden.</p>
<p>Vielen Dank für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1607251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1607251</guid><dc:creator><![CDATA[Noobody]]></dc:creator><pubDate>Thu, 30 Oct 2008 14:35:44 GMT</pubDate></item></channel></rss>