<?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[switch und lokale Variablen]]></title><description><![CDATA[<p>Ich möchte zur Laufzeit eine Reihe von Buffern in einem switch Kontext erzeugen,<br />
bekomme aber, wenn ich dies tue, die Meldung, dass die Initialisierung durch die case Marke übersprungen wird.</p>
<p>Wie gehe ich mit diesem Problem um?</p>
<p>Ps. Merkwürdigerweise sind die über den new operator erzuegten char* buffer nicht stabil.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193476/switch-und-lokale-variablen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 00:45:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193476.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Sep 2007 13:00:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:00:28 GMT]]></title><description><![CDATA[<p>Ich möchte zur Laufzeit eine Reihe von Buffern in einem switch Kontext erzeugen,<br />
bekomme aber, wenn ich dies tue, die Meldung, dass die Initialisierung durch die case Marke übersprungen wird.</p>
<p>Wie gehe ich mit diesem Problem um?</p>
<p>Ps. Merkwürdigerweise sind die über den new operator erzuegten char* buffer nicht stabil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373101</guid><dc:creator><![CDATA[Percy2000]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:05:22 GMT]]></title><description><![CDATA[<p>machst du sowas:</p>
<pre><code class="language-cpp">switch (foo){
case XXX:
   T * bar;
   ...
case ...
   ...
}
</code></pre>
<p>Dann mach daraus ein:</p>
<pre><code class="language-cpp">switch (foo){
case XXX:
   {
      T * bar;
      ...
   }
case ...
   ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1373112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373112</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:06:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">switch( xyz )
{
  case AHA:
  {
    int myLocalVar = 1234;
    break;
  }
}
</code></pre>
<p>meinst du sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373113</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:06:57 GMT]]></title><description><![CDATA[<p>ehm ganz einfach... du hast die {} vergessen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">void show_data(std::size_t id)
{
    switch (id)
    {
    case 32: 
        {
            int val = 64; std::cout &lt;&lt; val &lt;&lt; std::endl;
        } break;
    }
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373115</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:39:28 GMT]]></title><description><![CDATA[<p>Hmm, bin ein bisschen ratlos:</p>
<p>Hier bekomme ich die Meldung:<br />
Initialisierung von 'buffer' durch 'case'-Marke übersprungen</p>
<pre><code>switch(id)

{

case 1:
...
break;

case 6:
char* buffer = new char[128];
break;

case 7:
...
break;

}
</code></pre>
<p>Hintergrund, warum ich den new Operator benutzen will, ist, dass sich die Größe des Buffers von Mal zu Mal ändern kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373139</guid><dc:creator><![CDATA[Percy2000]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:40:27 GMT]]></title><description><![CDATA[<p>buffer ist im gesamten switch()-Block nach seiner Definition gültig, also auch im &quot;case 7&quot;-Zweig. Allerdings überspringst du bei id==7 die Initialisierung, so daß dort der Zeiger nicht initialisiert wird. Um die Gültigkeit einzuschränken, mußt du einen inneren Hilfblock öffnen:</p>
<pre><code class="language-cpp">switch(id)
{
case 1:
  ...
  break;

case 6:
  {
    char* buffer = new char[128];
    ...
    break;
  }

case 7:
  ...
  break;
}
</code></pre>
<p>(wenn der Pointer das Ende des switch() überleben soll, solltest du ihn vorher anlegen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373142</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:47:58 GMT]]></title><description><![CDATA[<p>ja, genau das ist der Punkt: Ich möchte die Gültigkeit auf case 6 einschränken.<br />
Wie mache ich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373150</guid><dc:creator><![CDATA[Percy2000]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:47:58 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 13:51:08 GMT]]></title><description><![CDATA[<p>Percy2000 schrieb:</p>
<blockquote>
<p>ja, genau das ist der Punkt: Ich möchte die Gültigkeit auf case 6 einschränken.<br />
Wie mache ich das?</p>
</blockquote>
<p>Indem Du liest was Dir schon viermal vorgeschlagen wurde? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373155</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 26 Sep 2007 13:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 14:08:17 GMT]]></title><description><![CDATA[<p>CSToll, herzlichen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373162</guid><dc:creator><![CDATA[Percy2000]]></dc:creator><pubDate>Wed, 26 Sep 2007 14:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to switch und lokale Variablen on Wed, 26 Sep 2007 14:09:40 GMT]]></title><description><![CDATA[<p>Percy2000 schrieb:</p>
<blockquote>
<p>der Compiler akzepteiert eine lokale Variable (wie viermal vorgeschlagen),<br />
aber er akzeptiert keine Erzeugung über den new operator.</p>
</blockquote>
<p>Dann hast Du diese Initialisierung <strong>nicht</strong> in einen Hilfsblock gefasst - was uns wieder zur letzten Antwort führt.</p>
<p>Wenn Du meinst es korrekt geändert zu haben, und es immernoch nicht funktioniert, musst Du nochmal den (geänderten) Code zeigen.</p>
<p>EDIT: Hast es wohl doch noch gesehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373168</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 26 Sep 2007 14:09:40 GMT</pubDate></item></channel></rss>