<?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[Globale Variablen und mehrere Units?]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich habe das Problem, das ich ein Projekt habe, welches mehrere Funktionen verwendet, die globale Variablen benutzen. Jetzt würde ich aber gerne diese Funktionen als eine Art Library vom Hauptprogramm abtrennen und damit eine bessere Übersichtlichkeit erreichen. Ich habe das Problem mal am folgenden Beispiel im Borland C++ Builder 4 ausprobiert:</p>
<p>HELLO.H (Vorwärts-Deklarationen und eine globale Variable &quot;pieps&quot;)</p>
<pre><code class="language-cpp">#ifndef HELLO_H
#define HELLO_H

#include &lt;condefs.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;

void printpieps();
void setpieps();

int pieps;

#endif
</code></pre>
<p>PIEPSFUNC.CPP (Library-Funktionen)</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;

void printpieps()
{
	printf(&quot;PIEPS: %d\n&quot;, pieps);
}

void setpieps()
{
	pieps = 45;
	printf(&quot;setpieps done: %d\n&quot;, pieps);
}
</code></pre>
<p>TEST.CPP (das Main-File meines Projekts)</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;

//---------------------------------------------------------------------------
USEUNIT(&quot;piepsfunc.cpp&quot;);
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
	pieps = 10;
	printf(&quot;%d\n&quot;, pieps);
	printpieps();
	printf(&quot;%d\n&quot;, pieps);
	setpieps();
	printf(&quot;%d\n&quot;, pieps);
	pieps = 999;
	printpieps();

	getch();
        return 0;
}
</code></pre>
<p>Wenn ich dieses Programm nun ausführe erhalte ich folgende Ausgabe:</p>
<blockquote>
<p>10<br />
PIEPS: 0<br />
10<br />
setpieps done: 45<br />
10<br />
PIEPS: 45</p>
</blockquote>
<p>Ich will aber eigentlich erreichen, das &quot;pieps&quot; als globale Variable von beiden Files sozusagen verwendet wird, d.h. wenn ich pieps in TEST.CPP auf 10 setze, soll auch pieps im PIEPSFUNC.CPP den Wert 10 haben, und umgekehrt. Demnach solte es richtig lauten:</p>
<blockquote>
<p>10<br />
PIEPS: 10<br />
10<br />
setpieps done: 45<br />
45<br />
PIEPS: 999</p>
</blockquote>
<p>Wisst ihr was man da machen kann?</p>
<p>Danke &amp; Gruss,<br />
~code_pilot</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113940/globale-variablen-und-mehrere-units</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:45:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113940.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jun 2005 14:59:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Tue, 28 Jun 2005 14:59:47 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich habe das Problem, das ich ein Projekt habe, welches mehrere Funktionen verwendet, die globale Variablen benutzen. Jetzt würde ich aber gerne diese Funktionen als eine Art Library vom Hauptprogramm abtrennen und damit eine bessere Übersichtlichkeit erreichen. Ich habe das Problem mal am folgenden Beispiel im Borland C++ Builder 4 ausprobiert:</p>
<p>HELLO.H (Vorwärts-Deklarationen und eine globale Variable &quot;pieps&quot;)</p>
<pre><code class="language-cpp">#ifndef HELLO_H
#define HELLO_H

#include &lt;condefs.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;

void printpieps();
void setpieps();

int pieps;

#endif
</code></pre>
<p>PIEPSFUNC.CPP (Library-Funktionen)</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;

void printpieps()
{
	printf(&quot;PIEPS: %d\n&quot;, pieps);
}

void setpieps()
{
	pieps = 45;
	printf(&quot;setpieps done: %d\n&quot;, pieps);
}
</code></pre>
<p>TEST.CPP (das Main-File meines Projekts)</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;

//---------------------------------------------------------------------------
USEUNIT(&quot;piepsfunc.cpp&quot;);
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
	pieps = 10;
	printf(&quot;%d\n&quot;, pieps);
	printpieps();
	printf(&quot;%d\n&quot;, pieps);
	setpieps();
	printf(&quot;%d\n&quot;, pieps);
	pieps = 999;
	printpieps();

	getch();
        return 0;
}
</code></pre>
<p>Wenn ich dieses Programm nun ausführe erhalte ich folgende Ausgabe:</p>
<blockquote>
<p>10<br />
PIEPS: 0<br />
10<br />
setpieps done: 45<br />
10<br />
PIEPS: 45</p>
</blockquote>
<p>Ich will aber eigentlich erreichen, das &quot;pieps&quot; als globale Variable von beiden Files sozusagen verwendet wird, d.h. wenn ich pieps in TEST.CPP auf 10 setze, soll auch pieps im PIEPSFUNC.CPP den Wert 10 haben, und umgekehrt. Demnach solte es richtig lauten:</p>
<blockquote>
<p>10<br />
PIEPS: 10<br />
10<br />
setpieps done: 45<br />
45<br />
PIEPS: 999</p>
</blockquote>
<p>Wisst ihr was man da machen kann?</p>
<p>Danke &amp; Gruss,<br />
~code_pilot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819112</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Tue, 28 Jun 2005 14:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Tue, 28 Jun 2005 15:14:13 GMT]]></title><description><![CDATA[<p>versuch's mal so:</p>
<pre><code class="language-cpp">[code]
//----------------------------------------------------------------------------
//globale Variablendefinition
extern int Speicher, Vorlauf, Ruecklauf, Lux, V1, V2, PumpeTime, SaveVarTime;
extern int Vorlauf_min, Speicher_max, Einschaltdiff, Ausschaltdiff, VentilTime;
extern bool R1, R2;
//-----------------------------------------------------------------------------
//Initialisierungsfunktionen
extern void init ();                    //initialisiert Variablen
extern void init_label ();              //initialisiert die Label

//usw...................
[/code]
</code></pre>
<p>so geht's halt bei mir!!</p>
<p>PS: steht in der Header Datei</p>
<p>mfg<br />
Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819120</guid><dc:creator><![CDATA[Tom7]]></dc:creator><pubDate>Tue, 28 Jun 2005 15:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 08:27:56 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Nein das geht so leider auch nicht, dann bekomme ich einen Linker-Fehler:</p>
<blockquote>
<p>[Linker Fehler] Unresolved external '_pieps' referenced from C:\PROGRAMME\BORLAND\CBUILDER4\PROJECTS\INCLUDE_TEST\PIEPSFUNC.OBJ.</p>
</blockquote>
<p>Allerdings nur, wenn ich wirklich sage</p>
<pre><code class="language-cpp">extern int pieps;
</code></pre>
<p>Bei den Funktionen gibts keinen Fehler. Aber du machst es doch genauso, warum geht das dann nicht bei mir?! <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="😕"
    /></p>
<p>Gruss,<br />
~code_pilot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819524</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 29 Jun 2005 08:27:56 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 08:41:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>hast du denn die Variable auch noch mal in der Implementationsdatei deklaraiert?</p>
<p>Header-Datei PIEPSFUNC.h</p>
<pre><code class="language-cpp">extern int pieps;
</code></pre>
<p>Implementationsdatei PIEPSFUNC.cpp</p>
<pre><code class="language-cpp">extern int pieps = 10; // Initialisierung
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819537</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 29 Jun 2005 08:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 10:53:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Lass das <strong>extern</strong> in der cpp mal lieber weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819639</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 29 Jun 2005 10:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 11:03:47 GMT]]></title><description><![CDATA[<p>Ja aber da dann global und ohne extern, das heißt direkt nach dem #include der div. Header Datein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819650</guid><dc:creator><![CDATA[&#x27;Tom7&#x27;]]></dc:creator><pubDate>Wed, 29 Jun 2005 11:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 11:13:24 GMT]]></title><description><![CDATA[<p>Wobei man noch erwähnen sollte, dass man globale Variablen grundsätzlich vermeiden soll. Die extensive Verwendung globaler Variablen ist immer ein Zeichen schlechten Designs. Wenn es unbedingt nötig ist kann man globale Variablen in ein Singleton oder Monostate packen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819666</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 29 Jun 2005 11:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 14:49:35 GMT]]></title><description><![CDATA[<p>Habs jetzt selber lösen können :):</p>
<p>HELLO.H</p>
<pre><code class="language-cpp">#ifndef HELLO_H
#define HELLO_H

#include &lt;condefs.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;

void printpieps();
void setpieps();

#endif
</code></pre>
<p>PIEPSFUNC.CPP</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;

extern int pieps;

void printpieps()
{
	printf(&quot;PIEPS: %d\n&quot;, pieps);
}

void setpieps()
{
	pieps = 45;
	printf(&quot;setpieps done: %d\n&quot;, pieps);
}
</code></pre>
<p>TEST.CPP</p>
<pre><code class="language-cpp">#include &quot;hello.h&quot;
int pieps;

//---------------------------------------------------------------------------
USEUNIT(&quot;piepsfunc.cpp&quot;);
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
	pieps = 10;
	printf(&quot;%d\n&quot;, pieps);
	printpieps();
	printf(&quot;%d\n&quot;, pieps);
	setpieps();
	printf(&quot;%d\n&quot;, pieps);
	pieps = 999;
	printpieps();

	getch();
	return 0;
}
</code></pre>
<p>So klappts ;)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819885</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 14:50:49 GMT]]></title><description><![CDATA[<p>Hier nochmal die (nun korrekte) Ausgabe:</p>
<blockquote>
<p>10<br />
PIEPS: 10<br />
10<br />
setpieps done: 45<br />
45<br />
PIEPS: 999</p>
</blockquote>
<p>~cp</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1">@ADMIN</a>: Thread close!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819889</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 14:58:29 GMT]]></title><description><![CDATA[<p>Warum übergibst du deine Variable nicht einfach den Funktionen die sie benötigen? So wäre das deutlich übersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819895</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Variablen und mehrere Units? on Wed, 29 Jun 2005 20:58:40 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Warum übergibst du deine Variable nicht einfach den Funktionen die sie benötigen? So wäre das deutlich übersichtlicher.</p>
</blockquote>
<p>Weil ich ein bestehendes System habe bei dem das nicht &quot;mal eben&quot; änderbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820169</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 29 Jun 2005 20:58:40 GMT</pubDate></item></channel></rss>