Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

С99 и объявление переменной

Стандартом написано что переменные в блоке создаются при входе в него. Но как в С99, если в нем переменные можно объявлять не в начале блока? Все равно создаются при входе в блок?


Ответ

Понимаете, вопрос о том, когда именно они создаются - совершенно праздный. Допустим, создаются в начале блока. Или, допустим, не создаются в начале блока. Или при одном ключе создаются, при другом - нет.
Вы-то все равно, пока не достигнете объявления переменной, никак не можете к ней обратиться. Очень многое зависит от оптимизатора - решит ли он размещать переменную в стеке или в регистре, разместит ли он ее в отдельной области памяти или в области, которая была занята другой переменной, но которая больше не используется.
Так что дать точный ответ на вопрос, как мене кажется, можно один - depends on :) Не уверен (если ошибаюсь - пусть гуру поправят), но такие вещи стандарт должен отдавать на откуп компилятору.

Комментариев нет:

Отправить комментарий