Я динамически вычисляю размер массива. Что-то типа:
void foo(size_t limit)
{
char buffer[limit * 14 + 1];
}
Но только компилятор GCC говорит:
error: ISO C90 forbids variable length array ‘buffer’
поиск по SO я нашел этот ответ:
C99 §6.7.5.2:
Если размер является выражением, которое не является целочисленным постоянным выражением ... ... каждый раз, когда оно оценивается, оно должно иметь значение больше нуля.
Итак, я повторно объявил переменную типа ограничения размера, чтобы:
void foo(const size_t limit)
Но он продолжает предупреждать меня. Это ошибка GCC?
C90 != C99
. - person user7116   schedule 19.04.2012size_t limit
какconst
ничего не меняет. Это по-прежнему массив переменной длины, поскольку размер определяется во время выполнения. - person Mysticial   schedule 19.04.2012limit
. - person Pascal Cuoq   schedule 19.04.2012gcc -std=c99 -pedantic ...
- person pmg   schedule 19.04.2012