<?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[wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen)]]></title><description><![CDATA[<p>Hallo alle zusammen,<br />
folgendes Problem:<br />
ich habe 3 Dateien in meimem Programm</p>
<p>A.cpp (initalisiert Variable a (z.B. int x =2) und ruft Funktion Abc auf.</p>
<p>B.cpp (hier wird die Funktion Initialisiert (void Abc () { cin &gt;&gt; x; } )</p>
<p>B.h ( hier ist der Prototyp der Funktion Abc deklariert (z.B. void Abc (); )</p>
<p>ich hoffe man kann es so verstehen - also weiter im text:</p>
<p>1. beim compilieren der Datei A.cpp (da befindet sich auch die main Funktion)<br />
meldet der Kompiler das die Variable x in der Datei B.cpp nicht deklariert ist.<br />
Vor int x = 2 habe ich auch extern hingesetzt aber is Funktioniert nicht.<br />
Was mache ich also falsch.<br />
In der FAQ gibt einmal so ein ähnliches Prob. es wurde aber genau so gelöst wie ich das gemacht habe - einfach ein extern vor die Variable und schon kannst du auf die Variable von überall zugreifen.</p>
<p>2. In der Datei A.cpp benutze ich #include &lt;iostream.h&gt;<br />
weil ich da cout und cin brauche<br />
Muss ich dann auch in B.cpp #include &lt;iostream.h&gt; benutzen,<br />
weil ich da auch einmal cin benutze?<br />
Das kann doch nicht das wahre sein oder?</p>
<p>Also wenn ihr antworten habt dann bitte, hier drunter ist noch Platz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124679/wie-nutze-ich-quot-extern-quot-programm-in-module-teilen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 01:36:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124679.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Oct 2005 11:25:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 11:25:45 GMT]]></title><description><![CDATA[<p>Hallo alle zusammen,<br />
folgendes Problem:<br />
ich habe 3 Dateien in meimem Programm</p>
<p>A.cpp (initalisiert Variable a (z.B. int x =2) und ruft Funktion Abc auf.</p>
<p>B.cpp (hier wird die Funktion Initialisiert (void Abc () { cin &gt;&gt; x; } )</p>
<p>B.h ( hier ist der Prototyp der Funktion Abc deklariert (z.B. void Abc (); )</p>
<p>ich hoffe man kann es so verstehen - also weiter im text:</p>
<p>1. beim compilieren der Datei A.cpp (da befindet sich auch die main Funktion)<br />
meldet der Kompiler das die Variable x in der Datei B.cpp nicht deklariert ist.<br />
Vor int x = 2 habe ich auch extern hingesetzt aber is Funktioniert nicht.<br />
Was mache ich also falsch.<br />
In der FAQ gibt einmal so ein ähnliches Prob. es wurde aber genau so gelöst wie ich das gemacht habe - einfach ein extern vor die Variable und schon kannst du auf die Variable von überall zugreifen.</p>
<p>2. In der Datei A.cpp benutze ich #include &lt;iostream.h&gt;<br />
weil ich da cout und cin brauche<br />
Muss ich dann auch in B.cpp #include &lt;iostream.h&gt; benutzen,<br />
weil ich da auch einmal cin benutze?<br />
Das kann doch nicht das wahre sein oder?</p>
<p>Also wenn ihr antworten habt dann bitte, hier drunter ist noch Platz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903779</guid><dc:creator><![CDATA[socco]]></dc:creator><pubDate>Sun, 30 Oct 2005 11:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 11:34:48 GMT]]></title><description><![CDATA[<p>Wichtigster Tip ( <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="😃"
    /> ):<br />
- Verwende KEINE globalen Variablen. Das ist nur in ganz<br />
wenigen Fällen wirklich notwendig. Und ohne deinen Code<br />
zu sehen glaub ich erstmal nicht das dein Beispiel<br />
dazugehört.</p>
<p>Zu 2.)<br />
Du benötigst die Includes pro Übersetzungseinheit. Für dich<br />
heisst das (scheinbar) pro CPP-Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903790</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 30 Oct 2005 11:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 11:44:51 GMT]]></title><description><![CDATA[<p>du magst recht haben was das mit den globalen variablen angeht<br />
aber wie ich habe ein anderes beispiel als ich den hier verwendet habe<br />
ich habe ein extra simples beispiel genommen</p>
<p>zu 2. wieso kann sich die 2.cpp datei nicht den include code von der 1.cpp holen das ist doch speicher verscwendung oder was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903798</guid><dc:creator><![CDATA[socco]]></dc:creator><pubDate>Sun, 30 Oct 2005 11:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 11:49:00 GMT]]></title><description><![CDATA[<p>du magst recht haben was das mit den globalen variablen angeht<br />
aber wie ich habe ein anderes beispiel als ich den hier verwendet habe<br />
ich habe ein extra simples beispiel genommen</p>
<p>zu 2. wieso kann sich die 2.cpp datei nicht den include code von der 1.cpp holen das ist doch speicher verscwendung oder was?</p>
<p>sorry für den Doppelpost</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903799</guid><dc:creator><![CDATA[socco]]></dc:creator><pubDate>Sun, 30 Oct 2005 11:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 12:55:49 GMT]]></title><description><![CDATA[<p>Weil beide getrennt voneinander übersetzt werden. Von dem was 1.cpp included<br />
weiss 2.cpp nicht. In deiner IDE kannst du ja auch jede CPP-Datei für sich<br />
alleine übersetzen, du siehst das Problem (hoffentlich).</p>
<p>Zu den globalen Variablen. Ich seh deinen Quellcode ja nicht. Daher nochmal,<br />
einmal definieren, üblicherweise in der CPP-Datei, und sonst mit &quot;extern&quot;,<br />
üblicherweise in der Header-Datei, deklarieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903850</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 30 Oct 2005 12:55:49 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 13:10:49 GMT]]></title><description><![CDATA[<p>Aha, also muss mann in der Header datei die variablen deklarieren und in der Source Datei wenn nötig definieren<br />
ist es so richtig?</p>
<p>Und nochmal zu 2.</p>
<p>z.B.<br />
ich habe 1 Funktion die ich in header 1 deklariere<br />
und ich habe mein gesamtes Programm in 10 Sourcedateien untergebracht<br />
z.B. main .cpp, createWindow .cpp, inits .cpp, shutDowns .cpp .... usw.<br />
und jetzt muss ich in jeder cpp dadei auf diese eine funktion zugreifen-<br />
dann müst ich ja erst mal überall #include &quot; soundso&quot;<br />
eintragen.<br />
ist ja irgendwie nicht das wahre.<br />
Oder werden programme nicht so geteilt vieleicht mache ich einen ginerellen denkfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Wär nett wenn mirs jemand richtig erklärt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903860</guid><dc:creator><![CDATA[socco]]></dc:creator><pubDate>Sun, 30 Oct 2005 13:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 13:29:37 GMT]]></title><description><![CDATA[<p>socco schrieb:</p>
<blockquote>
<p>Und nochmal zu 2.</p>
<p>z.B.<br />
ich habe 1 Funktion die ich in header 1 deklariere<br />
und ich habe mein gesamtes Programm in 10 Sourcedateien untergebracht<br />
z.B. main .cpp, createWindow .cpp, inits .cpp, shutDowns .cpp .... usw.<br />
und jetzt muss ich in jeder cpp dadei auf diese eine funktion zugreifen-<br />
dann müst ich ja erst mal überall #include &quot; soundso&quot;<br />
eintragen.<br />
ist ja irgendwie nicht das wahre.<br />
Oder werden programme nicht so geteilt vieleicht mache ich einen ginerellen denkfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Wär nett wenn mirs jemand richtig erklärt</p>
</blockquote>
<p>Ist aber so. <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 />
Ob deine Aufteilung sinnvoll ist, kann ich so nicht sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903867</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 30 Oct 2005 13:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 13:37:20 GMT]]></title><description><![CDATA[<p>socco schrieb:</p>
<blockquote>
<p>Aha, also muss mann in der Header datei die variablen deklarieren und in der Source Datei wenn nötig definieren<br />
ist es so richtig?</p>
</blockquote>
<p>Nein. Du definierst die globale Variable in <em>einer</em> Quelldatei und deklarierst sie in einem Header, den du dann überall dort einbindest, wo du die globale Variable nutzen willst.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903873</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Sun, 30 Oct 2005 13:37:20 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 14:12:04 GMT]]></title><description><![CDATA[<p>Ok ich denk ich habs jetzt<br />
noch eine frage wenn ich die Header mit der deklarierten Variablen in 2 Source dateien einbinde nimmt er dann 2 mal den speicher der Vari oder nur einmal?<br />
(einmal int vari in 1.cpp 4MB + int vari in 2.cpp 4MB zusammen 8MB<br />
oder nimmt er nur einmal 4MB für die in der Header deklarierten int Vari<br />
egal in wieviele .cpp du die header einbindest</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903898</guid><dc:creator><![CDATA[socco]]></dc:creator><pubDate>Sun, 30 Oct 2005 14:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to wie nutze ich &amp;quot;extern&amp;quot; (programm in module teilen) on Sun, 30 Oct 2005 14:26:10 GMT]]></title><description><![CDATA[<p>socco schrieb:</p>
<blockquote>
<p>Ok ich denk ich habs jetzt<br />
noch eine frage wenn ich die Header mit der deklarierten Variablen in 2 Source dateien einbinde nimmt er dann 2 mal den speicher der Vari oder nur einmal?<br />
(einmal int vari in 1.cpp 4MB + int vari in 2.cpp 4MB zusammen 8MB<br />
oder nimmt er nur einmal 4MB für die in der Header deklarierten int Vari<br />
egal in wieviele .cpp du die header einbindest</p>
</blockquote>
<p>Ich glaube du hast es noch nicht ganz verstanden.</p>
<p>Beispiel:<br />
Du hast die Module foo.cpp, bar.cpp und main.cpp und willst in allen die Variable my_global_var benutzen.<br />
Dann kannst du (z.B.) folgendes machen:</p>
<pre><code class="language-cpp">// header.hpp - hier extern-Deklaration der Variablen. Es wird _kein_ Speicher reserviert. Die Variable Wird nur bekannt gemacht. (Deklaration).
extern int my_global_var;

// foo.cpp
#include &quot;header.hpp&quot;

// hier kannst du jetzt my_global_var benutzen.

// bar.cpp
#include &quot;header.hpp&quot;

// dito.

// main.cpp
int my_global_var; // Definition. (D.h. Bekanntmachung beim Compiler und Reservierung von Speicher).

// hier in main kannst du my_global_var ebenfalls benutzen.

int main() { ... }
</code></pre>
<p>In obigem Beispiel definierst du die Variable my_global_var in main.cpp (D.h. hier stellst du auch Speicher für diese Variable bereit). In foo.cpp und bar.cpp bindest du nur den Header ein, in dem die Deklaration</p>
<pre><code class="language-cpp">extern int my_global_var;
</code></pre>
<p>steht, die besagt, dass es in irgendeinem modul (in unserem Beispiel ist das main.cpp) bereits einen Bezeichner gleichen Namens (in unserem Beispiel my_global_var) gibt, für den auch bereits Speicher reserviert wurde und dass sich jeder Zugriff auf den Bezeichner aus diesen Modulen (foo.cpp oder bar.cpp) doch bitte auf den Bezeichner (und den dort reservierten Speicher) in main.cpp beziehen soll. =&gt; Du reservierst nur einmal Speicher für den Bezeichner my_global_var. Nämlich bei seiner Definition.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903904</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Sun, 30 Oct 2005 14:26:10 GMT</pubDate></item></channel></rss>