<?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[Macro definition]]></title><description><![CDATA[<p>ich möchte gerne einen Macro bauen, damit man in verschiedenen Situationen files dynamisch inkludieren.<br />
z.B.</p>
<pre><code>#define MYCOUT #undef cout #include &quot;mycout.h&quot;
</code></pre>
<p>dann kann ich mein eigenes cout benutzen<br />
das Problem soll aber nicht durch namespace gelöst werden.<br />
wie macht ich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148955/macro-definition</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 02:32:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148955.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 May 2006 19:32:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Macro definition on Wed, 31 May 2006 19:32:00 GMT]]></title><description><![CDATA[<p>ich möchte gerne einen Macro bauen, damit man in verschiedenen Situationen files dynamisch inkludieren.<br />
z.B.</p>
<pre><code>#define MYCOUT #undef cout #include &quot;mycout.h&quot;
</code></pre>
<p>dann kann ich mein eigenes cout benutzen<br />
das Problem soll aber nicht durch namespace gelöst werden.<br />
wie macht ich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069103</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Wed, 31 May 2006 19:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Macro definition on Thu, 01 Jun 2006 10:02:38 GMT]]></title><description><![CDATA[<p>geht nicht da man # in markos garnicht verwenden kann</p>
<pre><code class="language-cpp">#undef cout
</code></pre>
<p>geht nicht cout ist ne klasse</p>
<blockquote>
<p>das Problem soll aber nicht durch namespace gelöst werden.<br />
wie macht ich das?</p>
</blockquote>
<p>dafür sind sie doch da !</p>
<p>und sonst geht vieleicht</p>
<pre><code class="language-cpp">#ifdef MYCOUT
# include &quot;mycout.h&quot;
#else
# include &lt;iostream&gt;
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1069189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069189</guid><dc:creator><![CDATA[KingOfTheBlueMouse]]></dc:creator><pubDate>Thu, 01 Jun 2006 10:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Macro definition on Thu, 01 Jun 2006 06:07:22 GMT]]></title><description><![CDATA[<p>wie wäre es denn mit folgendem:</p>
<pre><code class="language-cpp">#ifdef USE_MYCOUT
#define cout mycout
#endif
</code></pre>
<p>Dann würde ein Aufruf:</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Hallo&quot; &lt;&lt; endl;
</code></pre>
<p>vom Präprozessor expandiert in:</p>
<pre><code class="language-cpp">mycout &lt;&lt; &quot;Hallo&quot; &lt;&lt; endl;
</code></pre>
<p>Wobei ich einen solchen Programmierstiel in meinen Projekten verbieten würde. Ich verwende sowieso kein &quot;using namespace std&quot;, sondern qualifiziere immer vollständig mit std::cout. Dann funktioniert das nicht mehr.</p>
<p>Noch schwerwiegender ist es, daß ich beim lesen des Codes nicht auf Anhieb erkennen kann, daß nicht cout verwendet wird. Wenn ich im Sourcecode cout sehe, erwarte ich, daß die Ausgabe auf der Standardausgabe erscheint. Wenn wirklich alternierende Streams verwendet werden sollen, sollte das im Source ersichtlich sein, indem man das parametrisiert. Etwa so:</p>
<pre><code class="language-cpp">void f(std::ostream&amp; out)
{
  out &lt;&lt; &quot;Hallo&quot; &lt;&lt; std::endl;
}

#ifdef USE_MYCOUT
f(mycout);
#else
f(std::cout);
#endif
</code></pre>
<p>Dann ist es ersichtlich, daß die Funktion f auf irgendeinen Ausgabestream schreibt und da, wo ich meine Verzweigung habe, sehe ich, daß hier einmal mycout und einmal std::cout verwendet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069224</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 01 Jun 2006 06:07:22 GMT</pubDate></item><item><title><![CDATA[Reply to Macro definition on Thu, 01 Jun 2006 18:35:36 GMT]]></title><description><![CDATA[<blockquote>
<p>das Problem soll aber nicht durch namespace gelöst werden.<br />
wie macht ich das?</p>
</blockquote>
<blockquote>
<p>dafür sind sie doch da !</p>
</blockquote>
<p>nicht unbedingt verwendbar.<br />
Bsp Lösung:</p>
<p>MacC.h aus c datei</p>
<pre><code class="language-cpp">struct MacDreck
{
   float KalorienProzent;
   float FettProzent;
};
</code></pre>
<p>MacCPlus.h aus cpp Datei</p>
<pre><code>class MacDreck
{
   public:
   float anderKalorienProzent;
   float anderFettProzent;
};
</code></pre>
<p>Vorausgesetzt: du kannst nicht in cpp files namespace benutzen, weil es ist in einem Plattform definiert, was namespace nicht unterstützt.</p>
<p>in us2Mac.h (Z.B)</p>
<pre><code class="language-cpp">#define MacDreck MacDreckCpp
#include &quot;MacCPlus.h&quot;
#undef MacDreck
#include &quot;MacC.h&quot;
</code></pre>
<p>dann wenn du in us2Mac.cpp<br />
schreib:</p>
<pre><code class="language-cpp">MacDreck dr1 // C MacDreck
MacDreckCpp dr2 //c++ MacDreck
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1069759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069759</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 01 Jun 2006 18:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to Macro definition on Thu, 01 Jun 2006 19:13:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Vorausgesetzt: du kannst nicht in cpp files namespace benutzen, weil es ist in einem Plattform definiert, was namespace nicht unterstützt.</p>
</blockquote>
<p>Was willst du überhaubt machen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069766</guid><dc:creator><![CDATA[KingOfTheBlueMouse]]></dc:creator><pubDate>Thu, 01 Jun 2006 19:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Macro definition on Thu, 01 Jun 2006 20:16:12 GMT]]></title><description><![CDATA[<p>also folgende Situation:<br />
du willst 2 header Dateien in einer cpp Datei inkludieren. In diesen beiden Header Datei sind jeweils eine Klasse mit dem gleichen Namen definiert worden. Weil die beiden Dateien von einer dritten Patei mitgeliert sind(ohne namespace), du darfst also die Quellcode nicht ändern.<br />
Jetzt wie kannst du die Konflict vermeiden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069782</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 01 Jun 2006 20:16:12 GMT</pubDate></item></channel></rss>