Goto declaración no puede cruzar definición de variable?

Supongamos que estos códigos compilados eng++:

#include <stdlib.h>

int main() {
    int a =0;

    goto exit;

    int *b = NULL;

exit:
    return 0;
}

g++&nbsp;tirará errores:

goto_test.c:10:1: error: jump to label ‘exit’ [-fpermissive]
goto_test.c:6:10: error:   from here [-fpermissive]
goto_test.c:8:10: error:   crosses initialization of ‘int* b’

Parece que lagoto&nbsp;no se puede cruzar la definición del puntero, perogcc&nbsp;Los compila ok, nada se quejó.

Después de corregir el error, debemos declarar todos los punteros antes de cualquiera de losgoto&nbsp;declaración, es decir, debe declarar estos indicadores a pesar de que no los necesita en el presente (y la violación con algunos principios).

Lo que el diseño de origen considera queg++&nbsp;prohibido lo utilcola-goto&nbsp;¿declaración?

Actualizar:

goto&nbsp;puede cruzar variable (cualquier tipo&nbsp;de variable, no limitado a puntero) declaración,pero excepto los que obtuvieron un valor de inicialización. Si eliminamos elNULL&nbsp;tarea anterior,g++&nbsp;calla ahora Así que si quieres declarar variables que entregoto-a través del área,no haga&nbsp;Inicialízalos (y aún violando algunos principios).