次の簡略化されたコードがあります。
#include <stdio.h>
int main ()
{
printf("Hello ");
goto Cleanup;
Cleanup:
char *str = "World\n";
printf("%s\n", str);
}
ラベルの後に新しい変数が宣言されているため、エラーが発生します。{} ブロックのラベルの後にコンテンツ (主に初期化) を配置すると、コンパイルは成功します。
スイッチの場合のブロックの理由は理解できたと思いますが、ラベルの場合はなぜそれが適用されるのでしょうか?
このエラーは gcc コンパイラからのものです