<?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[include Probleme]]></title><description><![CDATA[<p>Hallo,<br />
ich habe da mal eine (sicher einfache) Frage. Ich habe mir ein c++ Programm geschrieben,</p>
<p>welches einige Funktionen und viele Variablen enthält. Zur besseren übersicht, habe ich nun</p>
<p>einige Funktionen in eine separate Datei kopiert und diese dann mit #include eingebunden.</p>
<p>Nun erklärt mir der Compiler, dass bestimme Funktionen nicht gefunden werden...</p>
<p>Bsp.:</p>
<p>Dat1.cpp</p>
<pre><code>void test()
{
...
...
clrsrc();
...
...
}
</code></pre>
<p>Hauptprogramm.cpp</p>
<pre><code>#include &quot;Dat1.cpp&quot;
#include &lt;conio.h&gt;

void main()
{
...
...
clrsrc();
...
test();
...
}
</code></pre>
<p>clrsrc(); ist in conio.h. Aber warum sagt der Compiler mir , dass clrscr ein Prototyp haben muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223837/include-probleme</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 20:01:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223837.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Oct 2008 15:55:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to include Probleme on Wed, 01 Oct 2008 15:55:00 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe da mal eine (sicher einfache) Frage. Ich habe mir ein c++ Programm geschrieben,</p>
<p>welches einige Funktionen und viele Variablen enthält. Zur besseren übersicht, habe ich nun</p>
<p>einige Funktionen in eine separate Datei kopiert und diese dann mit #include eingebunden.</p>
<p>Nun erklärt mir der Compiler, dass bestimme Funktionen nicht gefunden werden...</p>
<p>Bsp.:</p>
<p>Dat1.cpp</p>
<pre><code>void test()
{
...
...
clrsrc();
...
...
}
</code></pre>
<p>Hauptprogramm.cpp</p>
<pre><code>#include &quot;Dat1.cpp&quot;
#include &lt;conio.h&gt;

void main()
{
...
...
clrsrc();
...
test();
...
}
</code></pre>
<p>clrsrc(); ist in conio.h. Aber warum sagt der Compiler mir , dass clrscr ein Prototyp haben muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591602</guid><dc:creator><![CDATA[Hojo]]></dc:creator><pubDate>Wed, 01 Oct 2008 15:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Wed, 01 Oct 2008 16:16:17 GMT]]></title><description><![CDATA[<p>EDIT: Wenn Du (in Hauptprogramm.cpp) erst den nutzenden Code (Dat1.cpp) inkludierst und DANACH erst conio.h, weiß der Compiler noch nichts von &quot;conio.h&quot;, wenn er zum clrscr() kommt (beim compile von Hauptprogramm.cpp).</p>
<p>Diese Art der Inkludierung ist übriges nicht Sinn der Sache. Normalerweise macht man das (aus guten Gründen) so:</p>
<pre><code class="language-cpp">// Dat1.h
void test(); // Prototyp/Deklaration der Funktion test()
</code></pre>
<pre><code class="language-cpp">// Dat1.cpp
#include &quot;Dat1.h&quot; // Aus Konsistenzgründen

#include &lt;conio.h&gt; // Erst und nur hier wird conio.h gebraucht
void test() // implementierung der Funktion test().
{
...
...
clrsrc();
...
...
}
</code></pre>
<pre><code class="language-cpp">// Hauptprogramm.cpp
#include &quot;Dat1.h&quot; // hier &quot;importiere&quot; ich den Prototypen von test()

int main() 
{
...
...
clrsrc();
...
test();
...
}
</code></pre>
<p>ach ja: main gibt IMMER int zurück - nie void.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591611</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 01 Oct 2008 16:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Wed, 01 Oct 2008 18:06:28 GMT]]></title><description><![CDATA[<p>Digga, du musst die Libraries schon da includieren, wo du sie brauchst!<br />
Das heisst, jede Library extra include, kannst aber auch einfach ne Header nehmen, da den ganzen Müll reinpacken und bei jeder .cpp-Datei den Header dann includieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591673</guid><dc:creator><![CDATA[Waygener]]></dc:creator><pubDate>Wed, 01 Oct 2008 18:06:28 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 09:30:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>: Wie kann denn der Compiler die Datei Dat1.cpp finden, obwohl sie nirgends includet wird? Oder sucht der Compiler automatisch nach Dat1.cpp wenn es Dat1.h gibt?</p>
<p>@Waygener: ich weis nicht so recht was du meinst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594070</guid><dc:creator><![CDATA[Hojo]]></dc:creator><pubDate>Mon, 06 Oct 2008 09:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 09:35:57 GMT]]></title><description><![CDATA[<p>Hojo schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>: Wie kann denn der Compiler die Datei Dat1.cpp finden</p>
</blockquote>
<p>Genauso wie er die Datei Hauptprogramm.cpp findet - indem du sie ihm zeigst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594075</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 06 Oct 2008 09:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 09:36:59 GMT]]></title><description><![CDATA[<p>Der Compiler braucht zum Übersetzen deines Codes den Prototypen der zu benutzenden Funktionen. Daher inkludiert man diese wie hier bereits beschrieben. Erst der Linker benötigt dann wirklich alle Object-Dateien, um alle benötigten Symbole auflösen zu können und ein Executable bzw. eine lib oder Dll zu bauen.</p>
<p>Schau einfach mal hier: <a href="http://de.wikipedia.org/wiki/Kompilieren" rel="nofollow">http://de.wikipedia.org/wiki/Kompilieren</a></p>
<p>Gruß Kimmi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594077</guid><dc:creator><![CDATA[kimmi]]></dc:creator><pubDate>Mon, 06 Oct 2008 09:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 09:41:34 GMT]]></title><description><![CDATA[<p>Irgendwie versteh ich euch immer nocht net... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wenn ich das Beispiel von Simon (also Hauptprogramm) kopilieren will, holt er sich dann automatisch Dat1.cpp?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594080</guid><dc:creator><![CDATA[Hojo]]></dc:creator><pubDate>Mon, 06 Oct 2008 09:41:34 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 09:48:10 GMT]]></title><description><![CDATA[<p>Hojo schrieb:</p>
<blockquote>
<p>Irgendwie versteh ich euch immer nocht net... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wenn ich das Beispiel von Simon (also Hauptprogramm) kopilieren will, holt er sich dann automatisch Dat1.cpp?</p>
</blockquote>
<p>Grob:</p>
<p>Header sind das Inhaltsverzeichnis, die Sourcedateien (cpp) sind der eigentliche Text.</p>
<p>Übersetzt werden die cpp-Dateien einzelnen. Dazu brauchen sie nur die Inhaltsverzeichnisse der anderen Dateien, da sie nur wissen müssen, wo sie zur Laufzeit nachschlagen müssen. Wurden alle übersetzt, fügt der Linker alle zusammen, um sicherzustellen das auch kein Nachschlagen ins Leere führt.</p>
<p>Hört sich doof an, ist aber fast so. <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/1594084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594084</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 06 Oct 2008 09:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to include Probleme on Mon, 06 Oct 2008 10:25:06 GMT]]></title><description><![CDATA[<p>Hojo schrieb:</p>
<blockquote>
<p>Irgendwie versteh ich euch immer nocht net... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wenn ich das Beispiel von Simon (also Hauptprogramm) kopilieren will, holt er sich dann automatisch Dat1.cpp?</p>
</blockquote>
<p>Welchen Compiler/welche IDE verwendest du denn? Wenn du zum Beispiel den g+ verwendest, dann kannst du das Beispiel von Simon mit</p>
<pre><code>g++ Dat1.cpp Hauptprogramm.cpp -o foo.exe
</code></pre>
<p>kompilieren.</p>
<p>Was Simon noch vergessen hat, sind die Include-Guards in der Header-Datei, die sollte so (oder ähnlich) aussehen:</p>
<pre><code class="language-cpp">#ifndef DAT_1
#define DAT_1

// Dat1.h
void test(); // Prototyp/Deklaration der Funktion test()

#endif
</code></pre>
<p>Den Namen (DAT_1) kannst du dir natürlich frei aussuchen. Das dient dazu, dass wenn man die Header-Datei zwei mal einbindet (kann durch Benutzung in verschiedenen Headern und auch so leicht passieren), sie nur einmal übersetzt wird, um damit redeclaration Fehlern vorzubeugen. Das ist bei dieser Header-Datei zwar nicht wichtig, weil man eine Funktion mehrmals deklarieren kann, aber bei Klassen geht das zum Beispiel nicht mehr.</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594110</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Mon, 06 Oct 2008 10:25:06 GMT</pubDate></item></channel></rss>