C: Stapelspeicher, gehe zu und "springe in den Bezeichnerbereich mit variabel modifiziertem Typ",

Ich habe festgestellt, dass dies nicht kompiliert werden kann:

int test_alloc_stack(int size){
    if(0) goto error; // same issue whatever conditional is used
    int apply[size];
    give_values(apply,size);
    return 1;
    error:
        return 0;
}

Der Fehler, den ich erhalte, lautet: "Sprung in den Bezeichnerbereich mit variabel geändertem Typ". Das Eliminieren der Zeile mit "goto" und dem Sprung zum Fehler löst die Probleme.

Wenn ich die dynamische Zuordnung für die Anwendung verwende, verschwindet auch das Problem. Dies kompiliert gut:

 int test_alloc_heap(int size){
    if(0) goto error;
    int * apply = calloc(sizeof(int),size);
    give_values(apply,size);
    free(apply);
    return 1;
    error : return 0;
}

Was ist los ?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage