<?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[Generische Programmierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe mir in einer Header-Datei ein paar zeilen zusammengeschrieben, um je nach kompilierung <code>std::cout</code> oder <code>std::wcout</code> zu verwenden.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

#ifdef UNICODE
std::basic_ostream&lt;wchar_t&gt;&amp; tcout = std::wcout;
std::basic_ostream&lt;wchar_t&gt;&amp; tcerr = std::wcerr;
std::basic_ostream&lt;wchar_t&gt;&amp; tclog = std::wclog;
std::basic_istream&lt;wchar_t&gt;&amp; tcin  = std::wcin;
#else
std::basic_ostream&lt;char&gt;&amp; tcout = std::cout;
std::basic_ostream&lt;char&gt;&amp; tcerr = std::cerr;
std::basic_ostream&lt;char&gt;&amp; tclog = std::clog;
std::basic_istream&lt;char&gt;&amp; tcin  = std::cin;
#endif
</code></pre>
<p>Problem: wenn ich diese Datei mehrfach includiere, dann sagt der Linker logischerweise ständig, dass die Variablen schon ein paar mal in anderen Objektdateien vorkommen.</p>
<p>Wie kann ich dieses Problem umgehen?<br />
Ist mein Ansatz für solche generischen cout/wcout geschichten soweit in Ordnung, oder würdet ihr das völlig anders machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240716/generische-programmierung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 20:53:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240716.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 May 2009 18:19:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:19:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe mir in einer Header-Datei ein paar zeilen zusammengeschrieben, um je nach kompilierung <code>std::cout</code> oder <code>std::wcout</code> zu verwenden.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

#ifdef UNICODE
std::basic_ostream&lt;wchar_t&gt;&amp; tcout = std::wcout;
std::basic_ostream&lt;wchar_t&gt;&amp; tcerr = std::wcerr;
std::basic_ostream&lt;wchar_t&gt;&amp; tclog = std::wclog;
std::basic_istream&lt;wchar_t&gt;&amp; tcin  = std::wcin;
#else
std::basic_ostream&lt;char&gt;&amp; tcout = std::cout;
std::basic_ostream&lt;char&gt;&amp; tcerr = std::cerr;
std::basic_ostream&lt;char&gt;&amp; tclog = std::clog;
std::basic_istream&lt;char&gt;&amp; tcin  = std::cin;
#endif
</code></pre>
<p>Problem: wenn ich diese Datei mehrfach includiere, dann sagt der Linker logischerweise ständig, dass die Variablen schon ein paar mal in anderen Objektdateien vorkommen.</p>
<p>Wie kann ich dieses Problem umgehen?<br />
Ist mein Ansatz für solche generischen cout/wcout geschichten soweit in Ordnung, oder würdet ihr das völlig anders machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708596</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 10 May 2009 18:19:44 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:21:56 GMT]]></title><description><![CDATA[<p>Benutze im Header <code>extern</code> und nur die Deklaration. In einer CPP-Datei definierst du die Referenzen dann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708598</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 May 2009 18:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:22:10 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Include_guard" rel="nofollow">http://en.wikipedia.org/wiki/Include_guard</a><br />
koennte dir helfen.</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708599</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sun, 10 May 2009 18:22:10 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:22:18 GMT]]></title><description><![CDATA[<blockquote>
<p>#ifndef HEDAER_NAME<br />
#define HEADER_NAME</p>
<p>//Hier header inhalt</p>
<p>#endif</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1708600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708600</guid><dc:creator><![CDATA[superman!]]></dc:creator><pubDate>Sun, 10 May 2009 18:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:23:25 GMT]]></title><description><![CDATA[<p>geht im header extern davor und in der *.cpp das ohne extern?<br />
edit: uih, bin ich langsam. <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/1708601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708601</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 May 2009 18:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:24:31 GMT]]></title><description><![CDATA[<p>superman! schrieb:</p>
<blockquote>
<blockquote>
<p>#ifndef HEDAER_NAME<br />
#define HEADER_NAME</p>
<p>//Hier header inhalt</p>
<p>#endif</p>
</blockquote>
</blockquote>
<p>Leider nicht, das Problem liegt beim Linker.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>geht im header extern davor und in der *.cpp das ohne extern?</p>
</blockquote>
<p>Ja, sollte gehen. Man darf aber auch bei der Definition noch <code>extern</code> hinschreiben, soweit ich mich erinnern kann, ist es in gewissen Kontexten sogar nötig (wegen der Speicherklasse).</p>
<p><em>Edit:</em> <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>: Post wahrscheinlich falsch aufgefasst. <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/1708602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708602</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 May 2009 18:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to Generische Programmierung on Sun, 10 May 2009 18:25:38 GMT]]></title><description><![CDATA[<p>Danke <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>
<p>Das Problem waren übrigens nicht die &quot;Include-Guards&quot; sondern das Problem trat auf, wenn die Referenzen in verschiedene .cpp-Dateien includiert wurden.<br />
Das mit extern geht also <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/1708603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708603</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 10 May 2009 18:25:38 GMT</pubDate></item></channel></rss>