Функции для работы со временем, датой и системные функции
Этот раздел содержит системно-зависимые функции. Среди функций, определяемых стандартом ANSI С, к ним относятся функции времени и даты. В этом разделе также обсуждается категория функций, позволяющая осуществлять системный контроль низкого уровня. Ни одна из этих функций не определена стандартом ANSI С, поскольку все операционные среды отличаются друг от друга. Borland С++ обеспечивает широкий набор интерфейсных функций для DOS и BIOS. Эти функции применимы только к 16-разрядным программам, написанным для DOS (или исполняемым под DOS в среде Windows). Windows обеспечивает свой широкий набор интерфейсных функций, который называется Windows API (Application Programming Interface). Эти функции не описываются здесь.
Функции, оперирующие с временем и датой системы, требуют наличия заголовочного файла time.h, который содержит их прототипы. В этом заголовочном файле также определены два типа данных. Тип time_t дает возможность представления системного времени и даты в виде длинного целого. Об этих данных говорят как о календарном времени (calendar time). Структура типа tm содержит в своих полях дату и время. Структура tm определена следующим образом:
Значение tm_isdst будет положительным, если система находится в режиме летнего времени, равным нулю — если нет, и отрицательным — если данная информация отсутствует. Эта форма представления времени и даты называется раздельной (broken-down time). Borland С++ содержит также несколько нестандартных функций времени и даты, которые входят в обычную систему времени и даты и более тесно связаны с DOS. Эти функции используют структуры обоих типов time и date, которые определены в заголовочном файле dos.h. Ниже приводятся их объявления:
Функции интерфейса DOS требуют включения файла dos.h. Этот файл определяет объединение REGS, соответствующее регистрам семейства центральных процессоров серии 8086. Это объединение используется некоторыми функциями системного интерфейса. Оно определено как объединение двух структур с тем, чтобы позволить каждому регистру быть доступным как в виде слов так и в виде байт. Поскольку Borland С++ может компилировать код для обоих сред, как 16-разрядной так и 32-разрядной, то определение регистровых структур и объединения является достаточно сложным, чтобы удовлетворить обоим режимам. Однако для описываемых в этой главе функций требуется только 16-разрядная версия. Ниже показан 16-разрядный эквивалент этих структур.
В файле dos.h также определен тип SREGS, используемый некоторыми функциями для установки сегментных регистров. Ниже приведен его 16-битный эквивалент.
Некоторые из описанных здесь функций являются прямым интерфейсом к ROM-BIOS — самому нижнему уровню операционной системы. Эти функции требуют заголовочного файла bios.h.
Некоторые функции требуют предопределенных структур, которые пока не обсуждались. Определения этих структур будут даны по мере надобности в них.
MICROSOFT-COBMECTИMЫE ФУНКЦИИ
Borland С++ содержит несколько дополнительных интерфейсных функций DOS и BIOS. Хотя Borland С++ определяет свой собственный набор интерфейсных функций DOS и BIOS, он также включает в себя версии функций, совместимых с Microsoft С++. Эти версии начинаются с _dos или _bios. Использование той или другой версии существенно только с точки зрения переносимости.
Существует также несколько других функций со слегка измененными именами, все вместе составляющие избыточный набор. Причиной для этого опять-таки является совместимость с Microsoft С++. В общем случае версии Microsoft этих функций начинаются с подчеркивания. Например, enable() является функцией Borland, a _enable() служит именем версии функции Microsoft, включенной для совместимости.