<?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[mehrere Quelltextdateien kompilieren [Anfängerfrage]]]></title><description><![CDATA[<p>Ich habe ein kleines Programm geschrieben, und wollte dieses nun mal auf mehrere Dateien verteilen.<br />
1x .cpp-Datei mit Quellcode allgemein<br />
1x .cpp-Datei mit einer einfachen Funktion (soll mittels &quot;extern&quot; sich eine Variable aus dem 1. Quelltext holen)<br />
1x .hpp-Datei, enthält nur den Prototyp der Funktion</p>
<p>Leider bekomme ich immer diese Fehlermeldung, IDE/Compiler ist Visual C++ Express 2008:<br />
...\move.cpp(10) : error C2065: 'cout': nichtdeklarierter Bezeichner</p>
<p>Dabei müsste es doch klappen, oder?</p>
<p>game.cpp (teilweise)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
#include &quot;header.hpp&quot;
#include &quot;move.cpp&quot;

using namespace std;

//Hauptfunktion
int main ()
{
[...]
int nTaste = _getch();
[...]
move();
[...]
</code></pre>
<p>move.cpp (vollständig)</p>
<pre><code class="language-cpp">#include &quot;header.hpp&quot;

extern int nTaste;

void move ()
{

	if(nTaste == 80)
	{
		cout &lt;&lt; nTaste;
	}
}
</code></pre>
<p>header.hpp (vollständig)</p>
<pre><code class="language-cpp">void move ();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/246697/mehrere-quelltextdateien-kompilieren-anfängerfrage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 01:41:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246697.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jul 2009 12:19:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:19:32 GMT]]></title><description><![CDATA[<p>Ich habe ein kleines Programm geschrieben, und wollte dieses nun mal auf mehrere Dateien verteilen.<br />
1x .cpp-Datei mit Quellcode allgemein<br />
1x .cpp-Datei mit einer einfachen Funktion (soll mittels &quot;extern&quot; sich eine Variable aus dem 1. Quelltext holen)<br />
1x .hpp-Datei, enthält nur den Prototyp der Funktion</p>
<p>Leider bekomme ich immer diese Fehlermeldung, IDE/Compiler ist Visual C++ Express 2008:<br />
...\move.cpp(10) : error C2065: 'cout': nichtdeklarierter Bezeichner</p>
<p>Dabei müsste es doch klappen, oder?</p>
<p>game.cpp (teilweise)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
#include &quot;header.hpp&quot;
#include &quot;move.cpp&quot;

using namespace std;

//Hauptfunktion
int main ()
{
[...]
int nTaste = _getch();
[...]
move();
[...]
</code></pre>
<p>move.cpp (vollständig)</p>
<pre><code class="language-cpp">#include &quot;header.hpp&quot;

extern int nTaste;

void move ()
{

	if(nTaste == 80)
	{
		cout &lt;&lt; nTaste;
	}
}
</code></pre>
<p>header.hpp (vollständig)</p>
<pre><code class="language-cpp">void move ();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1752914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752914</guid><dc:creator><![CDATA[tobi2886]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:29:05 GMT]]></title><description><![CDATA[<p>1. cpp-Datei inkludiert man nicht! Was du aber getan hast.<br />
2. in deiner move.cpp fehlt der iostream-Include.</p>
<p>cpp-Dateien werden für sich alleine kompiliert. Braucht man in einer Datei was &quot;fremdes&quot;, holt man sich den entsprechenden Header per include. Auf keinen Fall holt man sich eine cpp-Datei per include!!!</p>
<p>Deshalb heißen cpp-Dateien eigentlich auch Kompiliereinheit.</p>
<p>cpp-Dateien werden also einzeln kompiliert, dadurch zu Obj-Dateien und die Obj-Dateien werden zu einer EXE gelinkt.</p>
<p>Schau dir nochmal deine Sourcen an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752922</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:31:56 GMT]]></title><description><![CDATA[<p>Danke für diesen (wahrscheinlich) wichtigen Hinweis! (das cpp-Files nicht included werden)<br />
OK, ist korrigiert - jetzt habe ich aber einen neuen Fehler:</p>
<p>*1&gt;move.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;int nTaste&quot; (?nTaste@@3HA)&quot;.</p>
<p>...Debug\DnD-Tabletop.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.*</p>
<p>HIER die NEUE<br />
move.cpp (vollständig)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;header.hpp&quot;

using namespace std;

extern int nTaste;

void move ()
{

	if(nTaste == 80)
	{
		cout &lt;&lt; nTaste;
	}
}
</code></pre>
<p>P.S.: move.cpp ist nicht mehr in game.cpp inkludiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752925</guid><dc:creator><![CDATA[tobi2886]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:36:26 GMT]]></title><description><![CDATA[<p>Ja, er findet nTaste nicht. Du hast ihm mit extern gesagt <em>&quot;du findest später beim Linken nTaste, ich weiß das!&quot;</em>. Aber du hast nirgends diese Variable definiert.</p>
<p>Das nTaste in deiner main()-Funktion ist aber eine andere Variable. Es ist eine <em>lokale</em> Variable, die nur innerhalb des Scopes main() gültig ist. Mit <code>extern int ntaste;</code> sagst du aber, das es eine <em>globale</em> int-Variable ist. Und diese findet der Linker nicht, nachdem alle cpp-Dateien kompiliert wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752931</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:39:42 GMT]]></title><description><![CDATA[<p>Achja, Anfängerfehler. Lokale &lt;-&gt; Globale Variable. Wenn ich</p>
<pre><code class="language-cpp">nTaste = _getch();
</code></pre>
<p>globalisiere (darf man das so schreiben?) klappts. Danke!</p>
<p>Wie würde man das jetzt sauberer lösen, als mit einer globalen Var.? Kann man das überhaupt? Man wird ja immer wieder darauf hingewiesen, dass globale Var. &quot;nicht schön&quot; sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752933</guid><dc:creator><![CDATA[tobi2886]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:41:14 GMT]]></title><description><![CDATA[<p>Noch als Tip: inkludiere deine eigenen Header-Dateien vor den fremden oder Standard-Headern. Also so:</p>
<pre><code class="language-cpp">#include &quot;meinHeader.hpp&quot;
#include &lt;iosteam&gt;
</code></pre>
<p>Hat mehrere Vorteile: 1. wird dein Header nicht durch fremde Header beeinflußt und man weiß was man in diesen noch inkludieren muß.<br />
2. wenn in deiner Header ein Fehler ist, kommt dieser früher, weil du nicht immer warten mußt, bis die fremden Header (die meistens fehlerfreier sind) durchkompiliert sind.</p>
<p>Der Tip ist keine Pflicht. Aber macht auch keine Mehrarbeit. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1752934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752934</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere Quelltextdateien kompilieren [Anfängerfrage] on Fri, 31 Jul 2009 12:48:33 GMT]]></title><description><![CDATA[<p>tobi2886 schrieb:</p>
<blockquote>
<p>Achja, Anfängerfehler. Lokale &lt;-&gt; Globale Variable. Wenn ich</p>
<pre><code class="language-cpp">nTaste = _getch();
</code></pre>
<p>globalisiere (darf man das so schreiben?) klappts. Danke!</p>
<p>Wie würde man das jetzt sauberer lösen, als mit einer globalen Var.? Kann man das überhaupt? Man wird ja immer wieder darauf hingewiesen, dass globale Var. &quot;nicht schön&quot; sind...</p>
</blockquote>
<p>Ja, du könntest deine move-Einheit allgemeiner machen bzw. von nTaste unabhängig. Das stärkt die Modularität und Wartbarkeit.</p>
<pre><code class="language-cpp">#include &quot;move.hpp&quot;
#include &lt;iostream&gt;

using namespace std;

void move (int taste)
{

    if(taste == 80)
    {
        cout &lt;&lt; taste;
    }
}
</code></pre>
<p>Die nTaste kannst du trotzdem lokal lassen:</p>
<pre><code class="language-cpp">int main ()
{
[...]
int nTaste = _getch();
[...]
move(nTaste); // Wert übergeben
[...]
</code></pre>
<p>Deine move-Funktion muß nicht wissen, wie der Tastenwert zustande gekommen ist, es reicht, wenn move weiß, auf welche Werte sie wie reagieren muß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752940</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:48:33 GMT</pubDate></item></channel></rss>