<?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 in headerfiles]]></title><description><![CDATA[<p>Hallo</p>
<p>folgendes Problem - ich habe ein Headerfile das Macros, typedeklarationen und globale<br />
Variablen enthält.<br />
Variablen sind als extern deklariert - beim linken bekomme ich immer den LNK2019 - warum sind die für den linker nicht sichtbar - der compiler läuft durch??</p>
<p>Gruss Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323317/globale-in-headerfiles</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 06:52:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323317.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Jan 2014 18:01:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 18:01:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>folgendes Problem - ich habe ein Headerfile das Macros, typedeklarationen und globale<br />
Variablen enthält.<br />
Variablen sind als extern deklariert - beim linken bekomme ich immer den LNK2019 - warum sind die für den linker nicht sichtbar - der compiler läuft durch??</p>
<p>Gruss Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379544</guid><dc:creator><![CDATA[dagute]]></dc:creator><pubDate>Sat, 25 Jan 2014 18:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 18:05:46 GMT]]></title><description><![CDATA[<p>Pack die Definition in das passende .cpp-File und füge zum Header ein &quot;extern T foo;&quot; hinzu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379547</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Sat, 25 Jan 2014 18:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 18:07:32 GMT]]></title><description><![CDATA[<p>dagute schrieb:</p>
<blockquote>
<p>warum sind die für den linker nicht sichtbar - der compiler läuft durch??</p>
</blockquote>
<p>Weil extern für den Compiler bedeutet: Du kannst annehmen, dass diese Variable da ist, der Linker kümmert sich schon drum.</p>
<p>Dumm ist das nur, wenn der Linker sie nicht findet.</p>
<p>Deshalb brauchst du irgendwo ein Source-File, das diese nochmal definiert und zwar ohne extern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379550</guid><dc:creator><![CDATA[macrosundglobalevariablen]]></dc:creator><pubDate>Sat, 25 Jan 2014 18:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 18:20:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Variablen sind als extern deklariert</p>
</blockquote>
<p>Eben: Sie sind deklariert. Und zwar mit <code>extern</code> . Das bedeutet, dass die Deklaration keine Definition ist. Und das wiederum bedeutet, dass die Objekte noch irgendwo definiert werden müssen. Sind sie das nicht, findet der Linker selbstverständlich keine Definition und beschwert sich über einen nicht aufgelösten <strong>externen</strong> Verweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379554</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 25 Jan 2014 18:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 19:03:18 GMT]]></title><description><![CDATA[<p>Mein Code ist C nicht C++<br />
habe jetzt ein ifdef __cplusplus { &quot;C&quot; endif um den header gesetzt und die<br />
external Schlüsselwörter gelöscht - jetzt gehts.</p>
<p>Aber mir ist nicht so klar warum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379560</guid><dc:creator><![CDATA[dagute]]></dc:creator><pubDate>Sat, 25 Jan 2014 19:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 19:08:23 GMT]]></title><description><![CDATA[<p>dagute schrieb:</p>
<blockquote>
<p>Mein Code ist C nicht C++</p>
</blockquote>
<p>Das ändert nichts.</p>
<blockquote>
<p>habe jetzt ein ifdef __cplusplus { &quot;C&quot; endif um den header gesetzt und die<br />
external Schlüsselwörter gelöscht - jetzt gehts.</p>
<p>Aber mir ist nicht so klar warum</p>
</blockquote>
<p>Am extern &quot;C&quot; liegts nicht.<br />
Ohne extern hast du nun eine Variablen Definition im Header.<br />
Wenn du den Header in einem Sourcefile inkludierst, wird diese Definition eingefügt. Der Compiler hat seine Deklaration (weil Definition immer auch Deklaration ist) und der Linker seine Definition. Alle sind glücklich.<br />
Inkludierst du den Header aber in einer anderen Datei wird dort ebenfalls die Definition eingefügt. Der Compiler hat immer noch seine Deklaration, aber der Linker hat nun zwei Definitionen und wird sich beschweren.<br />
Die Lösung wurde bereits geschrieben: Definiere die Variable zusätzlich in einer Sourcedatei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379561</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 25 Jan 2014 19:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to globale in headerfiles on Sat, 25 Jan 2014 20:47:11 GMT]]></title><description><![CDATA[<p>Danke Nathan das ist verständlich -</p>
<p>ich habe jetzt 3 verschiedene .c files die alle den Header benutzen - und es lässt<br />
sich einwandfrei builden.<br />
Es wird jedoch nur eine .obj datei erstellt - sollten das nicht 3 sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379596</guid><dc:creator><![CDATA[dagute]]></dc:creator><pubDate>Sat, 25 Jan 2014 20:47:11 GMT</pubDate></item></channel></rss>