Второе объявление объявляет три указателя на far значения типа char с именами nextchar, prevchar и currentchar. Эти указатели могут быть, в частности, использованы для хранения адресов элементов массива initlist. Обратите внимание на то, что специальное ключевое слово far должно быть повторено перед каждым описателем.
Модификатор interrupt
Модификатор interrupt предназначен для объявления функций, работающих с векторами прерываний процессора 8086/8088. Для функции типа interrupt при компиляции генерируется дополнительный код в точке входа и выхода из функции, для сохранения и восстановления регистров микропроцессора АХ, ВХ, СХ, DX, SI, DI, ES и DS. Остальные регистры — ВР, SP, SS, CS и IP сохраняются всегда как часть вызывающей последовательности языка Си или часть самой системы обработки прерывания.
См. пример в разделе 3.3.3.1.
Функции прерываний следует объявлять с типом возвращаемого значения void.
Функции прерываний поддерживаются для всех моделей памяти. В СП MSC, в малой и средней модели в регистр DS заносится при входе в функцию адрес сегмента данных всей программы, а в компактной, большой и максимальной модели в регистр DS заносится адрес сегмента данных программного модуля. В СП ТС только в максимальной модели в регистр DS заносится адрес сегмента данных программного модуля, а в остальных моделях—адрес сегмента данных всей программы.
Модификатор interrupt не может использоваться совместно с модификаторами near, far, huge.
Объявление переменных
В этом разделе дано последовательное описание синтаксиса и семантики объявлений переменных. Разновидности переменных перечислены в следующей таблице:
Таблица 3.4.
Вид переменной | Пояснение |
Простая переменная | Скалярная переменная целого или плавающего типа |
Переменная перечислимого типа | Простая переменная целого типа, принимающая значения из предопределенного набора именованных значений |
Структура | Переменная, содержащая совокупность элементов, которые могут иметь различные типы |
Объединение | Переменная, содержащая совокупность элементов, которые могут иметь различные типы, но занимают одну и ту же область памяти |
Массив | Переменная, содержащая совокупность элементов одинакового типа |
Указатель | Переменная, которая указывает на другую переменную (содержит ее адрес) |
Общая синтаксическая форма объявления переменных описана в начале раздела 3. В данном разделе для простоты изложения объявления описываются без спецификаций класса памяти и инициализаторов. Спецификации класса памяти описаны в разделе 3.6, инициализаторы — в разделе 3.7.
В объявлении простой переменной, массива и указателя спецификация типа может быть опущена. Если это объявление записано на внешнем уровне, то спецификация класса памяти тоже может быть опущена. В объявлении внутреннего уровня хотя бы одна из спецификаций — класса памяти или типа — должна присутствовать.
Объявление простой переменной
Синтаксис:
<
Объявление простой переменной определяет имя переменной и ее тип. Имя переменной задается <
Можно объявить несколько переменных в одном объявлении, задавая список <
Примеры.
int х; /* пример 1 */
unsigned long reply, flag; /* пример 2 */
double order; /* пример 3 */
В первом примере объявляется простая переменная х. Эта переменная может принимать любое значение из области значений типа int.
Во втором примере объявлены две переменные: reply и flag. Обе переменные имеют тип unsigned long.
В третьем примере объявлена переменная order, которая имеет тип double. Этой переменной могут быть присвоены значения с плавающей точкой.
Объявление переменной перечислимого типа
Синтаксис:
enum [<