Книга: Язык программирования Си. Издание 3-е, исправленное
4.7 Регистровые переменные
4.7 Регистровые переменные
Объявление register сообщает компилятору, что данная переменная будет интенсивно использоваться. Идея состоит в том, чтобы переменные, объявленные register, разместить на регистрах машины, благодаря чему программа, возможно, станет более короткой и быстрой. Однако компилятор имеет право проигнорировать это указание. Объявление register выглядит следующим образом:
register int х;
register char с;
и т. д. Объявление register может применяться только к автоматическим переменным и к формальным параметрам функции. Для последних это выглядит так:
f(register unsigned m, register long n)
{
register int i;
…
}
На практике существуют ограничения на регистровые переменные, что связано с возможностями аппаратуры. Располагаться в регистрах может лишь небольшое число переменных каждой функции, причем только определенных типов. Избыточные объявления register ни на что не влияют, так как игнорируются в отношении переменных, которым не хватило регистров или которые нельзя разместить на регистре. Кроме того, применительно к регистровой переменной независимо от того, выделен на самом деле для нее регистр или нет, не определено понятие адреса (см. главу 5). Конкретные ограничения на количество и типы регистровых переменных зависят от машины.
- Внешние переменные
- Регистровые переменные
- Автоматические переменные
- Внешние статические переменные
- 4.6 Статические переменные
- Статические переменные
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- 1.2.3. Константы, переменные и типы
- 22.3.3. Переменные окружения
- 8.3 Этап 3: переменные с произвольными именами; встроенные функции
- Контекстные переменные даты и времени