<?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[Variablendeklaration in case-Label]]></title><description><![CDATA[<p>Ich hatte heute mal einen Fehler, den ich bisher jetzt nicht replizieren kann. Dabei ging es um eine normale switch/case Konstruktion, so wie hier:</p>
<pre><code class="language-cpp">switch(num)
{
   case 1:
      int var;
   break;
}
</code></pre>
<p>Das hat dann einen Fehler verursacht, die Meldung lautete in etwa &quot;declaration of var skipped by case-label&quot;. Das ganze war ein Error, hat also tatsächlich den Compile-Vorgang gestoppt. Ich weiß leider atm nicht, wie eine Konstruktion aussieht, die diesen Fehler verursacht, aber falls jemand mehr weiß, bitte mal sagen, was ich hier meine. <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>
<p>Danach würde mich interessieren, wieso das ein Fehler war. Den Variablendeklarationen sind ja scheinbar in Ordnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209313/variablendeklaration-in-case-label</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 13:34:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209313.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Mar 2008 03:38:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablendeklaration in case-Label on Sat, 29 Mar 2008 03:38:56 GMT]]></title><description><![CDATA[<p>Ich hatte heute mal einen Fehler, den ich bisher jetzt nicht replizieren kann. Dabei ging es um eine normale switch/case Konstruktion, so wie hier:</p>
<pre><code class="language-cpp">switch(num)
{
   case 1:
      int var;
   break;
}
</code></pre>
<p>Das hat dann einen Fehler verursacht, die Meldung lautete in etwa &quot;declaration of var skipped by case-label&quot;. Das ganze war ein Error, hat also tatsächlich den Compile-Vorgang gestoppt. Ich weiß leider atm nicht, wie eine Konstruktion aussieht, die diesen Fehler verursacht, aber falls jemand mehr weiß, bitte mal sagen, was ich hier meine. <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>
<p>Danach würde mich interessieren, wieso das ein Fehler war. Den Variablendeklarationen sind ja scheinbar in Ordnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482519</guid><dc:creator><![CDATA[43]]></dc:creator><pubDate>Sat, 29 Mar 2008 03:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Variablendeklaration in case-Label on Sat, 29 Mar 2008 03:55:13 GMT]]></title><description><![CDATA[<p>Das Problem ist das Verhalten von switch bei fehlendem break:</p>
<pre><code class="language-cpp">switch(x) {
case 0:  int i = 0;
default: cout &lt;&lt; i;
}
</code></pre>
<p>Wenn das erlaubt waere, wuerde die Variable i im default-Zweig nicht initialisiert, nicht mal deklariert, sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482521</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Sat, 29 Mar 2008 03:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Variablendeklaration in case-Label on Sat, 29 Mar 2008 04:51:39 GMT]]></title><description><![CDATA[<p>das ist ein besonders nettes (und unbekanntes) feature.<br />
folgendes kompiliert beispielsweise perfekt (genauso wie der code des OPs kompilieren sollte):</p>
<pre><code class="language-cpp">switch(x) 
{
   case 0:  int i;
   default: cin &gt;&gt; i;
}
</code></pre>
<p>das problem bei Christophs code liegt in der initialisierung ( <code>= 0;</code> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482524</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 29 Mar 2008 04:51:39 GMT</pubDate></item><item><title><![CDATA[Reply to Variablendeklaration in case-Label on Sat, 29 Mar 2008 11:06:56 GMT]]></title><description><![CDATA[<p>Das Problem besteht soweit ich weiss eher, wenn man bei einem case Label keinen neuen Scope eroeffnet:</p>
<pre><code class="language-cpp">int i = 2;
    switch(i)
    {
    case 1:
      int x = 0; // Fehler, MSVC++ bringt hier afair die vom OP genannte Meldung
      break;

    case 2:
      break;
    }
</code></pre>
<pre><code class="language-cpp">int i = 2;
    switch(i)
    {
    case 1:
      {
        int x = 0; // geht
      }
      break;

    case 2:
      break;
    }
</code></pre>
<p>Edit: nochmal ausfuehrlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482582</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Sat, 29 Mar 2008 11:06:56 GMT</pubDate></item><item><title><![CDATA[Reply to Variablendeklaration in case-Label on Sat, 29 Mar 2008 11:58:37 GMT]]></title><description><![CDATA[<p>einmal grundsätzlich: dieses verhalten ist nicht auf switch beschränkt.<br />
kurz gesagt ist es einfach nicht möglich, zu einem punkt zu springen, wo ein objekt bereits sichtbar ist von einem punkt aus, an dem es das nicht ist:</p>
<pre><code class="language-cpp">class Foo 
{
public:
   Foo () {}
};

int main ()
{
   goto label; //fehler!

   Foo foo;

   label: return 0;
}

//beachte: rückwärts springen ist erlaubt
int main ()
{
   start: Foo foo;//... und wieder erschaffen
   goto start;    //Foo wird zerstört...
}
</code></pre>
<p>allerdings gibt es eine ausnahme: ist das objekt ein POD-typ und wird nicht manuell initialisiert, ist der sprung in ordnung.</p>
<pre><code class="language-cpp">struct POD {};
struct NoPOD
{
  NoPOD () {}
};

int main ()
{
   goto ok; //OK

   POD pod;
   ok: goto no_no; //fehler

   NoPOD nopod;
   no_no: goto nope; //fehler

   POD pod = POD();
   nope:  
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1482602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482602</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 29 Mar 2008 11:58:37 GMT</pubDate></item></channel></rss>