C : stack-Speicher, springen und "jump in den Bereich von Bezeichner-mit variabel modifizierten Typ",

Fand ich, dass diese weigert sich zu kompilieren :

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;
}

Den Fehler den ich bekomme, ist : "Sprung in den Bereich von Bezeichner-mit variabel modifizierten Typ".
Die Beseitigung der Zeile mit "goto" und der Sprung zu einem Fehler löst die Probleme.

Wenn ich die dynamische Zuordnung für Sie gelten, dann wird das problem auch verschwinden. Dies kompiliert fein:

 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 ?

  • alloca dieses problem nicht hat.
InformationsquelleAutor Vince | 2013-12-18
Schreibe einen Kommentar