<?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[Named loops - Kann mir jemand das Makro erklären?]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe gerade über <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Named_Loop" rel="nofollow">C++ Named Loops</a> gelesen. Was ich allerdings nicht verstehe ist was hier bei dem Makro passiert:</p>
<blockquote>
<p>#define named(blockname) goto blockname; \<br />
blockname##_skip: if (0) \<br />
blockname:</p>
<p>#define break(blockname) goto blockname##_skip;</p>
</blockquote>
<p>Kann mir jemand erklären, was da zeilenweise passiert? Ich kenne mich mit Makros leider nicht aus. Falls jemand eine gute Website kennt, wo man etwas über Makros lernt, wäre ich auch dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285530/named-loops-kann-mir-jemand-das-makro-erklären</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 07:48:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285530.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Apr 2011 10:11:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Named loops - Kann mir jemand das Makro erklären? on Fri, 22 Apr 2011 10:11:50 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe gerade über <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Named_Loop" rel="nofollow">C++ Named Loops</a> gelesen. Was ich allerdings nicht verstehe ist was hier bei dem Makro passiert:</p>
<blockquote>
<p>#define named(blockname) goto blockname; \<br />
blockname##_skip: if (0) \<br />
blockname:</p>
<p>#define break(blockname) goto blockname##_skip;</p>
</blockquote>
<p>Kann mir jemand erklären, was da zeilenweise passiert? Ich kenne mich mit Makros leider nicht aus. Falls jemand eine gute Website kennt, wo man etwas über Makros lernt, wäre ich auch dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2052866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2052866</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Fri, 22 Apr 2011 10:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to Named loops - Kann mir jemand das Makro erklären? on Fri, 22 Apr 2011 10:31:42 GMT]]></title><description><![CDATA[<p>Im ersten Schritt hast Du quasi Folgendes:</p>
<pre><code class="language-cpp">goto LABEL;
LABEL_skip:  //wird durch das goto LABEL übersprungen
if(false) //wird durch das goto LABEL übersprungen
LABEL:
for(...) //die Named-Loop
{
}
</code></pre>
<p>Wenn dann das <code>break</code> kommt gehts so weiter:</p>
<pre><code class="language-cpp">LABEL_skip:
if(false) //die Schleife wird nicht mehr ausgeführt...
for(...) //die Named-Loop
{
   break(LABEL); //springt zu LABEL_skip
}
</code></pre>
<p><code>blockname##_skip</code> klebt das, was man für <code>blockname</code> setzt an <code>_skip</code> ran. <code>blockname##</code> ist also ein Platzhalter für das, was der Benutzer tatsächlich vorgibt. Im Beispiel oben also <code>LABEL</code> .</p>
<p>Beschreibungen gibts z.B. <a href="http://en.wikipedia.org/wiki/C_preprocessor" rel="nofollow">hier</a>.<br />
Das, was hier gemacht wird läuft unter &quot;Token concatenation&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2052868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2052868</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 22 Apr 2011 10:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Named loops - Kann mir jemand das Makro erklären? on Fri, 22 Apr 2011 10:33:56 GMT]]></title><description><![CDATA[<p>Danke für die Erklärung. Ich probiers mal aus <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/2052874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2052874</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Fri, 22 Apr 2011 10:33:56 GMT</pubDate></item></channel></rss>