Программирование на C и C++

Онлайн справочник программиста на C и C++

Функции для работы со временем, датой и системные функции

Этот раздел содержит системно-зависимые функции. Среди функций, определяемых стандартом 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, вклю­ченной для совместимости.

Страницы