<?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[Funktionen in Extra Datei]]></title><description><![CDATA[<p>Hey Leute, ich lern grad C++ mit Scara, dort muss man in Übungen unter anderem Zeichnen. Nun habe ich in meiner Zeichenbrett Datei schon gefühlte eine Million<br />
Funktionen, diese würde ich gern Außlagern in eine &quot;Funktion.cpp&quot;</p>
<p>Und diese Includen in die &quot;Zeichenbrett.cpp&quot; ist das irgendwie möglich? Hatte<br />
probiert alles zu Kopieren und bei Zeichenbrett.cpp einfach #include &quot;Funktion.cpp&quot; dann kommt jedoch der Fehler das</p>
<p>XY ist bereits in Funktionen.obj definiert.</p>
<p>Kann man dort irgendwas machen? Wäre sau lieb <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="🙂"
    /></p>
<p>PS: In Zeichenbrett.cpp steht dann bei mir gerade:</p>
<pre><code class="language-cpp">int main() // Funktionen aufrufen.
{

Zeichenbrett::Oeffnen(600,400);
// ZeichneKreuz(100,100); // Zeichnet ein Kreuz an X=100, Y100
ZeichneRechteck(100,100,200,200); // Zeichnet ein Leeres Rechteck am Schnittpunkt X/Y100 mit Breite/Höhe 200 Pixel, können mit CIN Eingegeben werden.
}
</code></pre>
<p>Sprich er soll die Funktion ZeichneRechteck() aus der Funktionen.cpp Aufrufen.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280776/funktionen-in-extra-datei</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 00:21:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280776.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jan 2011 09:52:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 09:52:21 GMT]]></title><description><![CDATA[<p>Hey Leute, ich lern grad C++ mit Scara, dort muss man in Übungen unter anderem Zeichnen. Nun habe ich in meiner Zeichenbrett Datei schon gefühlte eine Million<br />
Funktionen, diese würde ich gern Außlagern in eine &quot;Funktion.cpp&quot;</p>
<p>Und diese Includen in die &quot;Zeichenbrett.cpp&quot; ist das irgendwie möglich? Hatte<br />
probiert alles zu Kopieren und bei Zeichenbrett.cpp einfach #include &quot;Funktion.cpp&quot; dann kommt jedoch der Fehler das</p>
<p>XY ist bereits in Funktionen.obj definiert.</p>
<p>Kann man dort irgendwas machen? Wäre sau lieb <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="🙂"
    /></p>
<p>PS: In Zeichenbrett.cpp steht dann bei mir gerade:</p>
<pre><code class="language-cpp">int main() // Funktionen aufrufen.
{

Zeichenbrett::Oeffnen(600,400);
// ZeichneKreuz(100,100); // Zeichnet ein Kreuz an X=100, Y100
ZeichneRechteck(100,100,200,200); // Zeichnet ein Leeres Rechteck am Schnittpunkt X/Y100 mit Breite/Höhe 200 Pixel, können mit CIN Eingegeben werden.
}
</code></pre>
<p>Sprich er soll die Funktion ZeichneRechteck() aus der Funktionen.cpp Aufrufen.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009637</guid><dc:creator><![CDATA[Ehnoah]]></dc:creator><pubDate>Fri, 21 Jan 2011 09:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 09:58:29 GMT]]></title><description><![CDATA[<p>Pack die Deklarationen (Funktionsprototypen) in eine Funktionen.h (oder .hpp), und die Definitionen/Implementationen (also die kompletten Funktionen mit Rumpf) in eine Funktionen.cpp. Die Header-Datei bindest du dann per #include-Statement in deiner Zeichenbrett.cpp ein, die Funktionen.cpp nicht, die muss nur dem Projekt hinzugefügt werden (und das ist sie automatisch, wenn du sie über die IDE erstellst). Den Header solltest du übrigens auch unbedingt mit include guards (=&gt;Google) versehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009639</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 21 Jan 2011 09:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 10:15:28 GMT]]></title><description><![CDATA[<p>Also ich habe jetzt verschiedene</p>
<p>Void</p>
<p>und 2-3 Int</p>
<p>habe alles in die Funktion.h gepackt. Jetzt geht alles 1A</p>
<p>Was müsste ich in die Funktionen.cpp machen?</p>
<p>Sprich eine Headerdatei ist wie eine Globale Datenbank auf die alle *.cpp dateien Zugreifen können?</p>
<p>ist eine .h automatisch eine *.dll dann?</p>
<p>(Sorry bin Blutiger Anfänger *g* )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009649</guid><dc:creator><![CDATA[Ehnoah]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 11:04:21 GMT]]></title><description><![CDATA[<p>Ehnoah schrieb:</p>
<blockquote>
<p>Also ich habe jetzt verschiedene</p>
<p>Void</p>
<p>und 2-3 Int</p>
<p>habe alles in die Funktion.h gepackt. Jetzt geht alles 1A</p>
</blockquote>
<p>Das denkst du nur. Sobald du den Header in mehr als einer Übersetzungseinheit (cpp-Datei) einbindest, bekommst du Linkerfehler wegen doppelter Definitionen. Daher kommen nur die Prototypen in den Header, die Definitionen in die cpp-Datei. Ein Beispiel ist unten.</p>
<p>Ehnoah schrieb:</p>
<blockquote>
<p>Was müsste ich in die Funktionen.cpp machen?</p>
</blockquote>
<p>Deine Funktionen implementieren, siehe Beispiel.</p>
<p>Ehnoah schrieb:</p>
<blockquote>
<p>Sprich eine Headerdatei ist wie eine Globale Datenbank auf die alle *.cpp dateien Zugreifen können?</p>
</blockquote>
<p>Alle, in denen (direkt oder indirekt) der Header eingebunden ist. Die zweite Voraussetzung ist, dass die Funktionen.cpp auch deinem Projekt hinzugefügt ist, so dass sie kompiliert wird.</p>
<p>Ehnoah schrieb:</p>
<blockquote>
<p>ist eine .h automatisch eine *.dll dann?</p>
</blockquote>
<p>Nein, eine dll ist was anderes (=&gt;Google).</p>
<p>Ehnoah schrieb:</p>
<blockquote>
<p>(Sorry bin Blutiger Anfänger *g* )</p>
</blockquote>
<p>Kein Thema. <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="🙂"
    /></p>
<p><strong>Beispiel:</strong></p>
<p>Funktionen.h</p>
<pre><code class="language-cpp">#ifndef FUNKTIONEN_H  //include-guard
#define FUNKTIONEN_H  //include-guard

void meineFunktion1(int val);  //Funktionsprototypen (Deklaration)
int meineFunktion2(double d);    //

#endif  //include-guard
</code></pre>
<p>Funktionen.cpp</p>
<pre><code class="language-cpp">void meineFunktion1(int val) {  //Funktionsdefinition
  std::cout &lt;&lt; val &lt;&lt; std::endl;  //hier ist also der wirkliche Inhalt der Funktion
}

int meineFunktion2(double d) {  //Funktionsdefinition
  return (int)d;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009657</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:04:21 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 10:56:44 GMT]]></title><description><![CDATA[<p>Super Beispiel danke dir!</p>
<p>dachte ich mir schon das es so ist aber, hab gedacht wenn ich nur</p>
<p>ZentralesRechteck(int x1); das dann ein Fehler kommt. Aber scheint zu gehn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Danke dir vielmals.</p>
<p>Guard hab ich mal mit drine werde später mal schaun was der macht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009671</guid><dc:creator><![CDATA[Ehnoah]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 11:16:10 GMT]]></title><description><![CDATA[<p>Ehnoah schrieb:</p>
<blockquote>
<p>Guard hab ich mal mit drine werde später mal schaun was der macht</p>
</blockquote>
<p>Der Guard sorgt dafür, dass der Header nicht mehrmals eingebunden werden kann (sonst hättest du doppelte Deklarationen, was wieder zu Compiler-Fehlern führen würde). Er funktioniert so:</p>
<p>- wenn FUNKTIONEN_H definiert ist, dann wurde der Header offensichtlich schon eingebunden (daher muss dieses define vom Namen her eindeutig sein, für jeden Header musst du dir also einen neuen Namen ausdenken). Alles zwischen #ifndef und #endif wird vom Präprozessor quasi ausgeblendet, denn die Bedingung für #ifndef ist ja nicht erfüllt. Der Header wird zwar noch mal eingebunden, er enthält dann aber im Grunde nix (so dass auch keine deiner Funktionen doppelt eingebunden wird).</p>
<p>- wenn FUNKTIONEN_H nicht definiert ist, dann definiere es (so dass beim nächsten Mal der Header als schon eingebunden angesehen wird) und füge alles zwischen #ifndef und #endif in den Quellcode ein.</p>
<p>Du musst auch verstehen, was #include genau macht. Dahinter steckt nichts Kompliziertes, es ist lediglich eine simple Textersetzung. Wenn du also einen Header per #include einbindest, heißt das nichts anderes, als dass der Inhalt der Header-Datei an die Stelle des #include-Statements gesetzt wird, bevor der Quellcode dem Compiler übergeben wird.</p>
<p>Ähnlich simpel funktionieren Anweisungen wie #ifdef. Beispiel:</p>
<pre><code class="language-cpp">#ifdef _DEBUG  //wenn du dein Projekt als Debug-Version erstellst (dann ist _DEBUG definiert),
DebugBreak();  //wird diese Zeile mit DebugBreak in den Quellcode eingefügt, bevor er kompiliert wird.
#endif         //Ansonsten existiert diese Zeile für den Compiler nicht.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009677</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Fri, 21 Jan 2011 19:04:01 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p><strong>Beispiel:</strong></p>
<p>Funktionen.h</p>
<pre><code class="language-cpp">#ifndef FUNKTIONEN_H  //include-guard
#define FUNKTIONEN_H  //include-guard

void meineFunktion1(int val);  //Funktionsprototypen (Deklaration)
int meineFunktion2(double d);    //

#endif  //include-guard
</code></pre>
</blockquote>
<p>Da fehlt inline.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009905</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Sat, 22 Jan 2011 01:06:17 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Da fehlt inline.</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2010018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2010018</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Sat, 22 Jan 2011 01:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen in Extra Datei on Sat, 22 Jan 2011 12:54:24 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/p1993089#1993089" rel="nofollow">http://www.c-plusplus.net/forum/p1993089#1993089</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2010122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2010122</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 22 Jan 2011 12:54:24 GMT</pubDate></item></channel></rss>