C: стек памяти, goto и «переход в область идентификатора с изменяемым типом»,
Я обнаружил, что это отказывается компилировать:
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;
}
Ошибка, которую я получаю:перейти в область действия идентификатора с изменяемым типом, Исключая строку с "идти к" и переход к ошибке решает проблемы.
Если я использую динамическое размещение для применения, то проблема также исчезнет. Это хорошо компилируется:
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;
}
Что здесь происходит ?