Почему компилятору C / C ++ необходимо знать размер массива во время компиляции?

Я знаю, что стандарты C, предшествующие C99 (а также C ++), говорят, что размер массива в стеке должен быть известен во время компиляции. Но почему так? Массив в стеке выделяется во время выполнения. Итак, почему размер имеет значение во время компиляции? Надеюсь, кто-нибудь объяснит мне, что компилятор будет делать с размером во время компиляции. Спасибо.

Пример такого массива:

void func()
{
    /*Here "array" is a local variable on stack, its space is allocated
     *at run-time. Why does the compiler need know its size at compile-time?
     */
   int array[10]; 
}
37
задан Eric Z 3 December 2010 в 02:14
поделиться