title: Why do I get "a label can only be part of a statement and a declaration is not a statement" if I have a variable that is initialized after a label?
body: <p>I have the following simplified code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main () 
  {
      printf("Hello ");
      goto Cleanup;
  Cleanup:
      char *str = "World\n";
      printf("%s\n", str);
  }
  </code></pre>
  
  <p>I get an error because a new variable is declared after the label. If I put the content (mainly initialization) after the label in a {} block, compilation succeeds.</p>
  
  <p>I think I understand the reason for the block in case of a switch, but why should it be applicable in case of a label ?</p>
  
  <p>This error is from a gcc compiler</p>