C : stack memory, goto and "jump into scope of identifier with variably modified type",

Viewed 18482

I found that this refuses to compile :

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

The error I get is : "jump into scope of identifier with variably modified type". Eliminating the line with "goto" and the jump to error solves the issues.

If I use dynamic allocation for apply, then the problem also disappear. This compiles fine:

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

What is going on ?

3 Answers
Related