<?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[Problem mit Präprozessor-Direktiven]]></title><description><![CDATA[<p>Guten Tag,<br />
Ich war schon oft, als &quot;Anonymer&quot; hier, doch nun habe ich beschlossen, mich anzumelden, um nicht nur Hilfe zu bekommen, sondern auch anderen zu helfen.<br />
Doch nun zu meinem Problem:<br />
Ich habe ein Projekt mit mehreren [3] .cpp-Dateien, die ein und den selben Header benötigen [#include &quot;Window.h&quot;]. Damit keine Mehrfachdefinition auftritt, habe ich versucht den Header dementsprechend zu sichern mit:</p>
<pre><code>#ifndef WINDOW_H
#define WINDOW_H
HWND hwndMain;
DWORD dwWndWidth;
DWORD dwWndHeight;
bool bRun;
#endif
</code></pre>
<p>Trotzdem bekomme ich die Fehlermeldungen:</p>
<blockquote>
<p>Driver.obj : error LNK2005: &quot;unsigned long dwWndHeight&quot; (?dwWndHeight@@3KA) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;bool bRun&quot; (?bRun@@3_NA) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;struct HWND__ * hwndMain&quot; (?hwndMain@@3PAUHWND__@@A) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;unsigned long dwWndWidth&quot; (?dwWndWidth@@3KA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;unsigned long dwWndHeight&quot; (?dwWndHeight@@3KA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;bool bRun&quot; (?bRun@@3_NA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;struct HWND__ * hwndMain&quot; (?hwndMain@@3PAUHWND__@@A) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;unsigned long dwWndWidth&quot; (?dwWndWidth@@3KA) ist bereits in BspMap.obj definiert.<br />
D:\FallenAngel\Debug\FallenAngel.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.</p>
</blockquote>
<p>Ich benutze die Visual C++ 2005 Express Edition.<br />
Habe auch schon das Projekt bereinigt und erneut versucht, ohne Erfolg.<br />
Muss ich noch irgendetwas in den Projekteinstellungen ändern?<br />
Vielen Dank für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198188/problem-mit-präprozessor-direktiven</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 20:28:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198188.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Nov 2007 12:55:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Präprozessor-Direktiven on Mon, 19 Nov 2007 12:55:35 GMT]]></title><description><![CDATA[<p>Guten Tag,<br />
Ich war schon oft, als &quot;Anonymer&quot; hier, doch nun habe ich beschlossen, mich anzumelden, um nicht nur Hilfe zu bekommen, sondern auch anderen zu helfen.<br />
Doch nun zu meinem Problem:<br />
Ich habe ein Projekt mit mehreren [3] .cpp-Dateien, die ein und den selben Header benötigen [#include &quot;Window.h&quot;]. Damit keine Mehrfachdefinition auftritt, habe ich versucht den Header dementsprechend zu sichern mit:</p>
<pre><code>#ifndef WINDOW_H
#define WINDOW_H
HWND hwndMain;
DWORD dwWndWidth;
DWORD dwWndHeight;
bool bRun;
#endif
</code></pre>
<p>Trotzdem bekomme ich die Fehlermeldungen:</p>
<blockquote>
<p>Driver.obj : error LNK2005: &quot;unsigned long dwWndHeight&quot; (?dwWndHeight@@3KA) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;bool bRun&quot; (?bRun@@3_NA) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;struct HWND__ * hwndMain&quot; (?hwndMain@@3PAUHWND__@@A) ist bereits in BspMap.obj definiert.<br />
Driver.obj : error LNK2005: &quot;unsigned long dwWndWidth&quot; (?dwWndWidth@@3KA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;unsigned long dwWndHeight&quot; (?dwWndHeight@@3KA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;bool bRun&quot; (?bRun@@3_NA) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;struct HWND__ * hwndMain&quot; (?hwndMain@@3PAUHWND__@@A) ist bereits in BspMap.obj definiert.<br />
Window.obj : error LNK2005: &quot;unsigned long dwWndWidth&quot; (?dwWndWidth@@3KA) ist bereits in BspMap.obj definiert.<br />
D:\FallenAngel\Debug\FallenAngel.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.</p>
</blockquote>
<p>Ich benutze die Visual C++ 2005 Express Edition.<br />
Habe auch schon das Projekt bereinigt und erneut versucht, ohne Erfolg.<br />
Muss ich noch irgendetwas in den Projekteinstellungen ändern?<br />
Vielen Dank für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405860</guid><dc:creator><![CDATA[BurningBrain]]></dc:creator><pubDate>Mon, 19 Nov 2007 12:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Präprozessor-Direktiven on Mon, 19 Nov 2007 13:00:08 GMT]]></title><description><![CDATA[<p>Die include-Guards schützen nur vor mehrfachen Definitionen innerhalb EINER Übersetzungseinheit (CPP-File nach Präprozessor-Verarbeitung), nicht vor Problemen zwischen verschiedenen Übersetzungseinheiten (bevor der Code auch nur in die Nähe des Linkers kommt, sind die PP-Direktiven schon verarbeitet worden). Da hilft es nur, die Definitionen in genau einer CPP-Datei einzutragen - mit extern-Deklarationen im Header&gt;</p>
<pre><code class="language-cpp">//Window.h
#ifndef WINDOW_H
#define WINDOW_H
extern HWND hwndMain;
extern DWORD dwWndWidth;
extern DWORD dwWndHeight;
extern bool bRun;
#endif
</code></pre>
<pre><code class="language-cpp">//Window.cpp
#include &quot;Window.h&quot;

HWND hwndMain;
DWORD dwWndWidth;
DWORD dwWndHeight;
bool bRun;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1405864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405864</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 19 Nov 2007 13:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Präprozessor-Direktiven on Mon, 19 Nov 2007 13:02:48 GMT]]></title><description><![CDATA[<p>Die Variablen als extern im Header deklarieren und in einer .cpp Datei die Variablen dann definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405868</guid><dc:creator><![CDATA[ich_du_er]]></dc:creator><pubDate>Mon, 19 Nov 2007 13:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Präprozessor-Direktiven on Mon, 19 Nov 2007 14:42:02 GMT]]></title><description><![CDATA[<p>Vielen Dank, ihr habt mir sehr geholfen.<br />
Dann weiß ich jetzt auch, dass ich mich wohl mal genauer über den Linker- und Builderprozess informieren muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405943</guid><dc:creator><![CDATA[BurningBrain]]></dc:creator><pubDate>Mon, 19 Nov 2007 14:42:02 GMT</pubDate></item></channel></rss>