<?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[Frage zur Makroverwendung]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine Frage zu Makros. Ist es üblich diese auch im Programmverlauf zu verwenden. Also beispielsweise<br />
so etwas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#define MIN(a,b) ((a)&lt;(b) ? (a) : (b))
using namespace std;

int main()
{
#undef MIN
#ifdef MIN
	int zahl = MIN(6,4);
	cout &lt;&lt; zahl;
#endif
#ifndef MIN
	cout &lt;&lt; &quot;Der Himmel ist blau&quot;;
#endif 
	return 0;
}
</code></pre>
<p>Außerdem verstehe ich nicht den Sinn ein Makro ohne Ersatztext zu definieren. Laut meinem Lehrbuch kann mit dem Einsatz eines solchen Makros eine Headerdatei identifiziert werden und somit kann eine Mehrfachinkludierung vermieden werden. Diese Technik würden wohl auch in den Standard-Header-Dateien gebraucht werden.</p>
<p>Ich verstehe das nicht? Kann mir jemand diese &quot;Technik&quot; mal an einem Beispiel erörtern?</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247847/frage-zur-makroverwendung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 11:02:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247847.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Aug 2009 17:18:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Makroverwendung on Sun, 16 Aug 2009 17:18:40 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine Frage zu Makros. Ist es üblich diese auch im Programmverlauf zu verwenden. Also beispielsweise<br />
so etwas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#define MIN(a,b) ((a)&lt;(b) ? (a) : (b))
using namespace std;

int main()
{
#undef MIN
#ifdef MIN
	int zahl = MIN(6,4);
	cout &lt;&lt; zahl;
#endif
#ifndef MIN
	cout &lt;&lt; &quot;Der Himmel ist blau&quot;;
#endif 
	return 0;
}
</code></pre>
<p>Außerdem verstehe ich nicht den Sinn ein Makro ohne Ersatztext zu definieren. Laut meinem Lehrbuch kann mit dem Einsatz eines solchen Makros eine Headerdatei identifiziert werden und somit kann eine Mehrfachinkludierung vermieden werden. Diese Technik würden wohl auch in den Standard-Header-Dateien gebraucht werden.</p>
<p>Ich verstehe das nicht? Kann mir jemand diese &quot;Technik&quot; mal an einem Beispiel erörtern?</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761858</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Sun, 16 Aug 2009 17:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Makroverwendung on Sun, 16 Aug 2009 17:27:25 GMT]]></title><description><![CDATA[<p>So, wie Makros in deinem Beispiel eingesetzt werden sollte man das nicht tun. Da nimmst du besser eine inline Funktion. Makros haben diverse Nachteile, welche aber per google gefunden werden können.</p>
<p>Include Guards werden hier erklärt:<br />
<a href="http://en.wikipedia.org/wiki/Include_guard" rel="nofollow">http://en.wikipedia.org/wiki/Include_guard</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761862</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 16 Aug 2009 17:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Makroverwendung on Sun, 16 Aug 2009 18:48:20 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#ifdef __WIN32
typedef void* NativeFileType;
#else
typedef int NativeFileType;
#endif

NativeFileType openFileForReading(char const* filename);

...
int main(){
...
   NativeFileType file=openFileForReading(...
</code></pre>
<p>würde ich lieber machen als</p>
<pre><code class="language-cpp">...
int main(){
...
#ifdef __WIN32
  HANDLE file=openFileForReading(...
#else
  int file=openFileForReading(...
#endif
</code></pre>
<p>Aber oft sieht man das #ifdef mitten im Code wie im zweiten Beispiel. Also es ist durchaus üblich, leider.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761888</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Aug 2009 18:48:20 GMT</pubDate></item></channel></rss>