Declaração variável após goto Label

oje encontrei uma coisa interessante. Eu não sabia que não se pode declarar uma variável após um rótulo got

Compilando o seguinte código

#include <stdio.h>
int main() {
    int x = 5;
    goto JUMP;
    printf("x is : %d\n",x);
JUMP:
    int a = 0;  <=== giving me all sorts of error..
    printf("%d",a);
}

dá erros como

temp.c: In function ‘main’:
temp.c:7: error: expected expression before ‘int’
temp.c:8: error: ‘a’ undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)

Agora, qual é a lógica por trás disso? Ouvi dizer queone não pode criar variáveis dentro das instruções de caso do switch. Como JUMP está dentro do mesmo escopo (o escopo da função principal, no meu caso) da instrução goto, acredito que o escopo não seja um problema aqui. Mas então, por que estou recebendo esse erro?

questionAnswers(8)

yourAnswerToTheQuestion