<?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[Visual C++ 2005 &amp;amp; Include]]></title><description><![CDATA[<p>Hallo,<br />
evtl. kann mir hier jemand weiterhelfen, suchen hat mir meine Frage(n) leider nicht beantwortet.<br />
Also, ich nutze VC05 und mich würde nun mal interessieren, wie der Kompiler denn eigentlich seine Dateien verknüpft.<br />
Ich bin davon ausgegangen dass ein #include &quot;x.y&quot; den Inhalt der Datei x.y sozusagen an die Stelle, an der das include steht, kopiert - und der Kompiler das dann als eine Datei betrachted. Ist aber wohl nicht so.<br />
Denn wenn ich z.B. in einem Projekt in die Datei main.cpp schreibe:</p>
<pre><code>#include &quot;eins.h&quot;
#include &quot;zwei.h&quot;
</code></pre>
<p>ist in zwei.h der Inhalt von eins.h unbekannt. Ich muss also in zwei.h eins.h nochmal einbinden.<br />
Interessanterweise gibt er mir dann einen eventuell vorhandenen Fehler in eins.h 2 mal aus -&gt; wird ja auch zweimal eingebunden. Aber warum kennt zwei.h die Deklarationen aus eins.h ohne erneutes Include nicht?<br />
Was mich weiterhin verwundert, dass man .cpp-Dateien nicht per #include einbinden kann (wenn ichs doch probiere, meckert er mir alles als doppelt definiert an) - er kompiliert wohl automatisch alles, was im Projekt ist. Warum macht er dass dann mit den &quot;.h&quot; nicht auch?<br />
Irgendwie ist mir dieses Verhalten unklar, und auch, was wann wo bekannt ist.<br />
Ich hoffe, jemand kann mich aufklären <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 />
Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169425/visual-c-2005-amp-include</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 00:35:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169425.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Jan 2007 08:04:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Visual C++ 2005 &amp;amp; Include on Fri, 05 Jan 2007 08:04:10 GMT]]></title><description><![CDATA[<p>Hallo,<br />
evtl. kann mir hier jemand weiterhelfen, suchen hat mir meine Frage(n) leider nicht beantwortet.<br />
Also, ich nutze VC05 und mich würde nun mal interessieren, wie der Kompiler denn eigentlich seine Dateien verknüpft.<br />
Ich bin davon ausgegangen dass ein #include &quot;x.y&quot; den Inhalt der Datei x.y sozusagen an die Stelle, an der das include steht, kopiert - und der Kompiler das dann als eine Datei betrachted. Ist aber wohl nicht so.<br />
Denn wenn ich z.B. in einem Projekt in die Datei main.cpp schreibe:</p>
<pre><code>#include &quot;eins.h&quot;
#include &quot;zwei.h&quot;
</code></pre>
<p>ist in zwei.h der Inhalt von eins.h unbekannt. Ich muss also in zwei.h eins.h nochmal einbinden.<br />
Interessanterweise gibt er mir dann einen eventuell vorhandenen Fehler in eins.h 2 mal aus -&gt; wird ja auch zweimal eingebunden. Aber warum kennt zwei.h die Deklarationen aus eins.h ohne erneutes Include nicht?<br />
Was mich weiterhin verwundert, dass man .cpp-Dateien nicht per #include einbinden kann (wenn ichs doch probiere, meckert er mir alles als doppelt definiert an) - er kompiliert wohl automatisch alles, was im Projekt ist. Warum macht er dass dann mit den &quot;.h&quot; nicht auch?<br />
Irgendwie ist mir dieses Verhalten unklar, und auch, was wann wo bekannt ist.<br />
Ich hoffe, jemand kann mich aufklären <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 />
Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203288</guid><dc:creator><![CDATA[_Chris]]></dc:creator><pubDate>Fri, 05 Jan 2007 08:04:10 GMT</pubDate></item><item><title><![CDATA[Reply to Visual C++ 2005 &amp;amp; Include on Fri, 05 Jan 2007 08:27:29 GMT]]></title><description><![CDATA[<p>_Chris schrieb:</p>
<blockquote>
<p>Hallo,<br />
evtl. kann mir hier jemand weiterhelfen, suchen hat mir meine Frage(n) leider nicht beantwortet.<br />
Also, ich nutze VC05 und mich würde nun mal interessieren, wie der Kompiler denn eigentlich seine Dateien verknüpft.<br />
Ich bin davon ausgegangen dass ein #include &quot;x.y&quot; den Inhalt der Datei x.y sozusagen an die Stelle, an der das include steht, kopiert - und der Kompiler das dann als eine Datei betrachted.</p>
</blockquote>
<p>Doch so ist es... Du kannst es mit der Compiler-Option &quot;/P&quot; nachprüfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203298</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 05 Jan 2007 08:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to Visual C++ 2005 &amp;amp; Include on Fri, 05 Jan 2007 08:26:13 GMT]]></title><description><![CDATA[<blockquote>
<p>ist in zwei.h der Inhalt von eins.h unbekannt.</p>
</blockquote>
<p>Hast du eventuell die &quot;zwei.h&quot; noch irgendwo anders (alleine) verwendet? Wenn ja, beziehen sich die Fehler über unbekannte Bezeichner höchstwahrscheinlich darauf.</p>
<blockquote>
<p>Interessanterweise gibt er mir dann einen eventuell vorhandenen Fehler in eins.h 2 mal aus -&gt; wird ja auch zweimal eingebunden.</p>
</blockquote>
<p>Um das zu Umgehen, gibt es Include-Guards.<br />
(deren Wirkung ist recht simpel - wenn der selbe Header doppelt eingebunden werden soll, wird beim zweiten Mal der Dateiinhalt ausmaskiert)</p>
<p>PS: Klar könntest du auch CPP-Files per #include einbinden und H-Files direkt compilieren, nur macht das idR wenig Sinn. Der VC compilert dir normalerweise alle CPP's in deinem Projekt - und wenn du einen davon per #include eingebunden hast, gehen seine Definitionen doppelt an den Linker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203303</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Jan 2007 08:26:13 GMT</pubDate></item><item><title><![CDATA[Reply to Visual C++ 2005 &amp;amp; Include on Fri, 05 Jan 2007 09:00:17 GMT]]></title><description><![CDATA[<p>Incluge Guards wurden von CStoll ja schon angesprochen. Wenn man es nur mit den MS Compilern zu tun hat dann genügt <strong>#pragma once</strong><br />
Das hat den großen Vorteil, dass die entsprechende Datei gar nicht mehr gelesen wird sondern bereits beim #include übersprungen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203323</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 05 Jan 2007 09:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Visual C++ 2005 &amp;amp; Include on Fri, 05 Jan 2007 09:32:17 GMT]]></title><description><![CDATA[<p>#pragma once gibts mittlerweile (wenn ich mich recht erinnere) sogar für den GCC! Ist fast defacto-Standard. Verlassen kann man sich darauf natürlich nicht, aber mit MSVC und GCC sind die meist genutzt Mainstream-Compiler abgedeckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203343</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 05 Jan 2007 09:32:17 GMT</pubDate></item></channel></rss>