<?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[Schwammige Frage zu Includes, Abhängigkeiten und dem Linker]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem:<br />
in einem größeren Projekt wird eine Klasse verwendet, die gleichzeitig noch einmal in einer dll vorhanden ist, die statisch eingebunden wird.</p>
<p>- Zunächst ganz allgemein gefragt: Mit welchen Problemen muss man in einem solchen Fall rechnen?<br />
a) wenn die Implementation in Anwendung und dll identisch sind.<br />
b) wenn sie unterschiedlich sind.</p>
<p>- Wie/wo entscheidet sich, welche tatsächliche Implementation aufgerufen wird bzw. welcher Header tatsächlich eingebunden wird?</p>
<p>- Warum kracht es hier nicht grundsätzlich, wenn Definitionen doppelt vorkommen?</p>
<p>Sorry, dass sich so allgemein frage. Mir ist nicht ganz klar, was passiert, wenn ich in irgendeinem File, in dem ich diese Klasse verwende,</p>
<pre><code class="language-cpp">#include &quot;MyClass.h&quot;
</code></pre>
<p>schreibe, weil dieser Header ja sowohl im eigentlichen Projekt als auch in der dll vorhanden ist.</p>
<p>Für ein wenig Aufklärung wäre ich dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214597/schwammige-frage-zu-includes-abhängigkeiten-und-dem-linker</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 11:38:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214597.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 May 2008 13:02:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schwammige Frage zu Includes, Abhängigkeiten und dem Linker on Sat, 31 May 2008 13:02:35 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem:<br />
in einem größeren Projekt wird eine Klasse verwendet, die gleichzeitig noch einmal in einer dll vorhanden ist, die statisch eingebunden wird.</p>
<p>- Zunächst ganz allgemein gefragt: Mit welchen Problemen muss man in einem solchen Fall rechnen?<br />
a) wenn die Implementation in Anwendung und dll identisch sind.<br />
b) wenn sie unterschiedlich sind.</p>
<p>- Wie/wo entscheidet sich, welche tatsächliche Implementation aufgerufen wird bzw. welcher Header tatsächlich eingebunden wird?</p>
<p>- Warum kracht es hier nicht grundsätzlich, wenn Definitionen doppelt vorkommen?</p>
<p>Sorry, dass sich so allgemein frage. Mir ist nicht ganz klar, was passiert, wenn ich in irgendeinem File, in dem ich diese Klasse verwende,</p>
<pre><code class="language-cpp">#include &quot;MyClass.h&quot;
</code></pre>
<p>schreibe, weil dieser Header ja sowohl im eigentlichen Projekt als auch in der dll vorhanden ist.</p>
<p>Für ein wenig Aufklärung wäre ich dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520189</guid><dc:creator><![CDATA[Sponge]]></dc:creator><pubDate>Sat, 31 May 2008 13:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schwammige Frage zu Includes, Abhängigkeiten und dem Linker on Sat, 31 May 2008 21:26:46 GMT]]></title><description><![CDATA[<p>hallo sponge</p>
<p>wenn ich dich richtig verstanden habe, gibt es dafür die folgenden präprozessor direktiven:</p>
<pre><code class="language-cpp">#ifndef HEADER_NAME_H
    #define HEADER_NAME_H
#endif
</code></pre>
<p>wenn du das an den anfang deiner header datei schreibst, definierst du damit die datei mit einer symbolischen konstante und verhinderst so mehrfaches einbinden. der compiler merkt anhand der direktive, das (wenn zutreffend) die datei bereits an diese stelle eingebunden wurde und repertiert es nicht ein weiteres mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520379</guid><dc:creator><![CDATA[krakki]]></dc:creator><pubDate>Sat, 31 May 2008 21:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schwammige Frage zu Includes, Abhängigkeiten und dem Linker on Sat, 31 May 2008 21:35:10 GMT]]></title><description><![CDATA[<p>habe noch etwas vergessen. das #endif muss ans ende der datei weil der compiler ignoriert den ganzen code inerhalb der direktive wenn die bedingung fehlschlägt. also:</p>
<pre><code class="language-cpp">#ifndef HEADER_NAME_H
    #define HEADER_NAME_H

    //.....dein ganzer header code....

#endif
</code></pre>
<p>übrigends ist dann für denn dll type ein #define sehr nützlich:</p>
<pre><code class="language-cpp">#ifndef HOST_ANWENDUNG
    #define DLL_TYPE dllexport
#else
    #define DLL_TYPE dllimport
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1520381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520381</guid><dc:creator><![CDATA[krakki]]></dc:creator><pubDate>Sat, 31 May 2008 21:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schwammige Frage zu Includes, Abhängigkeiten und dem Linker on Sun, 01 Jun 2008 12:15:16 GMT]]></title><description><![CDATA[<p>Hi!<br />
Danke für die Antwort!</p>
<p>krakki schrieb:</p>
<blockquote>
<p>habe noch etwas vergessen. das #endif muss ans ende der datei weil der compiler ignoriert den ganzen code inerhalb der direktive wenn die bedingung fehlschlägt. also:</p>
<pre><code class="language-cpp">#ifndef HEADER_NAME_H
    #define HEADER_NAME_H

    //.....dein ganzer header code....

#endif
</code></pre>
</blockquote>
<p>Dass man ein doppeltes Einbinden auf diese Weise verhindern kann, ist mir eigentlich klar. (Meine Frage nach doppelten Definitionen war deshalb Blödsinn, sorry.)<br />
Mir ging es eher darum, ob sich irgendwie vorhersagen lässt, welcher der beiden Header eingebunden wird, insbesondere dann, wenn sich die Version in der dll von der in der eigentlichen Applikation unterscheidet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520523</guid><dc:creator><![CDATA[Sponge]]></dc:creator><pubDate>Sun, 01 Jun 2008 12:15:16 GMT</pubDate></item></channel></rss>