Глобальные переменные
Borland С++ предусматривает ряд предопределенных глобальных
переменных, которые могут использоваться при работе с датой, временем, аргументами командной строки и т.д.
Переменная _8087 (dos.h)
Флаг микропроцессора (для DOS, Win16, Win32). Устанавливается в ненулевое значение, если логика автообнаружение кода запуска
обнаруживает наличие сопроцессора. Эту логику можно переопределить установкой переменной операционной среды 87.
Переменная _argc (dos.h)
Содержит число аргументов командной строки (для DOS, Win16,
Win32 и OS/2) - значение argc, переданное main при запуске программы.
Переменная _argv (dos.h)
Массив указателей на аргументы командной строки (для DOS,
Win16, Win32 и OS/2). Элементы этого массива передаются программе
при ее запуске.
Переменная _ctype (ctype.h)
Информационных массив символьных атрибутов (для DOS, Win16,
Win32 и OS/2), индексируемых значением ASCII +1. Каждая запись это битовый набор, описывающий символ.
Переменная _daylight (time.h)
Указывает, требуется ли сохранение настраиваемого времени
суток (для DOS, Win16, Win32 или OS/2). Используется функциями
даты и времени. Принимает значения 1 (сохраненное время) и 0
(стандартное).
Переменная _directvideo (cohio.h)
Флаг, управляющий видеовыводом (для DOS, Win16, Win32). Определяет вывод непосредственно в видеопамять (1) или через вызовы
BIOS в ПЗУ (0). По умолчанию равна 1. Эту переменную следует использовать только в символьных приложениях.
Переменная _environ (dos.h)
Позволяет обращаться к системным переменным операционной
среды и представляет собой массив указателей на строки "переменная=значение" (для DOS, Win16, Win32 и OS/2). Значение в строке
может быть пустым. При выполнении значения переменных среды передаются непосредственно программе.
Обращаться к _environ можно через getenv, а добавлять, изменять или удалять записи массива _environ - с помощью getenv.
Переменные errno, _doserrno, _sys_errlist, _sys_nerr (dos.h, errno.h)
Для печати сообщений об ошибке разрешает perror (для DOS,
Win16, Win32 и OS/2). Функция perror использует эти переменные
для вывода сообщений об ошибках.
Переменная | Назначение
|
---|
errno | Указывает тип ошибки при математическом
или системном вызове. В других ситуациях
не содержит кода ошибки.
|
_doserrno | Содержит фактический код ошибки операционной системы, когда вызов операционной системы дает ошибку.
|
_sys_errlist | Массив строк сообщений. В качестве индекса
массива для поиска строки по номеру ошибки
можно использовать errno.
|
_sys_nerr | Число строковых сообщений в _sys_nerr.
|
Мнемонические обозначения в _sys_errlist показаны в следующей таблице:
Мнемоника | Описание
|
---|
E2BIG | Слишком длинный список аргументов.
|
EACCES | В разрешении отказано.
|
EBADF | Неверный номер файла.
|
ECHILD | Нет дочернего процесса (Ч).
|
ECONTR | Попытка удаления текущего каталога CurDir.
|
EDEADLOCK | Нарушение блокировки (Ч).
|
EDOM | Ошибка домена (*) или математического аргумента (Ч).
|
EEXIST | Файл уже существует.
|
EFAULT | Неизвестная ошибка.
|
EINTR | Прерванный функциональный вызов (Ч).
|
EINVACC | Недопустимый код доступа.
|
EINVAL | Недопустимый аргумент.
|
EINVDAT | Недопустимые данные.
|
EINDRV | Недопустимая спецификация диска.
|
EINVENV | Недопустимая операционная среда.
|
EINVFMP | Недопустимый формат.
|
EINVFNC | Недопустимый номер функции.
|
EINVMEM | Недопустимый адрес блока памяти.
|
EIO | Ошибка ввода-вывода (Ч).
|
EMFILE | Открыто слишком много файлов.
|
EMATOOLONG | Слишком длинное имя файла (Ч).
|
ENFILE | Слишком много открытых файлов.
|
ENMFILE | Файлов больше нет.
|
ENODEV | Нет такого устройства.
|
ENOENT | Нет такого файла или каталога.
|
ENOEXEC | Ошибка формата выполняемого файла.
|
ENOMEM | Не хватает памяти.
|
ENOPATH | Маршрут не найден.
|
ENOSPC | На устройстве не осталось места (Ч).
|
ENOTSAM | Не то же устройство.
|
ENXIO | Нет такого устройства или адреса (Ч).
|
EPERM | Операция не разрешена (Ч).
|
EPIPE | Нарушение конвейера (Ч).
|
ERANGE | Результат вне диапазона (*) или слишком велик (Ч).
|
EORFS | Файловая система доступна только по чтению (Ч).
|
ESPIPE | Неразрешенная операция установки позиции (Ч).
|
EXDEV | Перекрестная связь между устройствами.
|
EZER0 | Ошибка 0.
|
(Ч) - только для 32-разрядных приложений.
(*) - только для 16-разрядных приложений.
Ниже перечислены мнемоники фактических кодов ошибок DOS, в
которые может устанавливаться _doserrno (это значение может не
отображаться через errno):
Мнемоника | Код ошибки DOS
|
---|
E2BIG | Неверная операционная среда.
|
EACCES | Доступ запрещен.
|
EACCES | Неверный доступ.
|
EACCES | Это текущий каталог.
|
EBADF | Неверный описатель.
|
EFAULT | Зарезервирован.
|
EINVAL | Неверные данные.
|
EINVAL | Неверная функция.
|
EMFILE | Слишком много открытых файлов.
|
ENOENT | Такого файла или каталога нет.
|
ENOEXEC | Неверный формат.
|
ENOMEM | Нет памяти.
|
ENOMEM | Плохой блок.
|
EXDEV | Неверный диск.
|
EXDEV | Не то же устройство.
|
Переменная _floatconvert (stdio.h)
Компонует форматы с плавающей точкой (для DOS, Win16, Win32
и OS/2). Вывод с плавающей точкой требует компоновки подпрограмм
преобразования. Для уменьшения размера такая компоновка автоматически не выполняется. Однако, она выполняется автоматически при
использовании в программе математической подпрограммы или получении числа с плавающей точкой.
Переменная _fmode (fcntl.h)
Определяет заданный по умолчанию режим трансляции - текстовый или двоичный (для DOS, Win16, Win32 и OS/2). По умолчанию задается текстовый режим: при вводе возврат каретки/перевод строки
транслируется в перевод строки, а при выводе наоборот.
Переменная _new_handler
Перехватывает операции распределения (для DOS, Win16, Win32
и OS/2). Содержит указатель на функцию без аргументов, возвращающую void. При невозможности распределения памяти будет вызываться
функция, на которую указывает данная переменная. В качестве альтернативы можно использовать функцию _set_new_handler.
Переменные _osmajor, _osminor_, _osversion (dos.h)
Содержит основной и дополнительный номера версии операционной системы (для DOS, Win16, Win32 и OS/2).
Переменная _psp (dos.h)
Содержит адрес сегмента PSP для текущей программы (для DOS,
Win16, Win32 и OS/2). PSP - это дескриптор процесса DOS, который
содержит начальную информацию о программе.
Переменная _threadid (stddef.h)
Указатель на идентификатор нити (для DOS, Win32 и OS/2).
Это значение длинного целого типа, идентифицирующее текущую выполняемую нить.
Переменные __throwExceptionName, __throwFileName, __throwLineNumber (except.h)
Генерируют информацию о порожденной исключительной ситуации
(для DOS, Win16, Win32 и OS/2). Эти глобальные переменные позволяют получить имя и место возникновения особой ситуации (в виде
текстовой строки).
Переменная _timezone (time.h)
Содержит разницу в секундах между местным временем и временем по Гринвичу (для DOS, Win16, Win32 и OS/2). Используется
функциями даты и времени.
Переменная _tzname (time.h)
Массив указателей на имена временных поясов (для DOS, Win16,
Win32 и OS/2).
Переменная _version (dos.h)
Содержит номер версии операционной системы (для DOS, Win16,
Win32 и OS/2). Основной номер версии находится в старшем байте
(или слове для 32-разрядного приложения).
Переменная _wscroll (conio.h)
Разрешает или запрещает прокрутку в консольных функциях ввода-вывода (для DOS, Win16, Win32 и OS/2). По умолчанию прокрутка
разрешена - переменная имеет значение 1. При установке в 0 прокрутка запрещается. Данную переменную следует использовать только
в текстовых приложениях.
Потоковые классы С++
Библиотека потоковых классов в С++ состоит из нескольких
классов, распределенным по двум отдельным иерархическим деревьям.
Данный справочный материал содержит некоторые наиболее полезные
детали таких классов. Перечисляемые классы содержатся в различных
файлах заголовков:
Файл заголовка | Классы
|
---|
constrea.h | conbuf, constream (только для приложений консольного режима).
|
iostream.h | ios, iostream, iostream_withassign, istream,
istream_withassign, streambuf
|
fstream.h | filebuf, fstream, ostream, strstream, strstre-
ambase, strstreambuf.
|
Класс conbuf (constrea.h)
Специализирует streambuf для обработки консольного вывода.
Функции-элементы
Constructor | Создает подключенный conbuf.
|
clreol | Очищает экран до конца текстового окна.
|
clrscr | Очищает заданный экран.
|
delline | Удаляет строку в окне.
|
gotoxy | Позиционирует курсор в заданной позиции окна.
|
highvideo | Выделяет символы повышенной яркостью.
|
insline | Вставляет пустую строку.
|
lowvideo | Выделяет символы пониженной яркостью.
|
normvideo | Задает нормальную интенсивность символов.
|
overflow | Выводит содержимое conbuf.
|
setcursotype | Задает вид курсора.
|
textattr | Задает атрибут текста.
|
textbackground | Задает текстовый фоновый курсор.
|
textmode | Переводит курсор в текстовый режим.
|
wherex | Получает горизонтальную позицию курсора.
|
wherey | Получает вертикальную позицию курсора.
|
window | Определяет активное окно.
|
Класс constream (constrea.h)
Обеспечивает потоки вывода на консоль. Этот класс является
производным от ostream и доступен только для приложений консольного режима.
Функции-элементы
Constructor | Определяет для консоли неподсоединенный поток
вывода.
|
clrscr | Очищает экран.
|
rdbuf | Возвращает указатель на назначенный для потока conbuf.
|
textmode | Переводит экран в текстовый режим.
|
window | Определяет активное окно.
|
Класс filebuf (fstream.h)
Специализирует streambuf для ввода и вывода символов. Управляет выделением и удалением буфера, а также установкой позиции в
файле. Позволяет с помощью соответствующего конструктора или
функции-элемента использовать небуферизованный ввод-вывод. По
умолчанию файлы открываются в режиме openprot и допускают чтение
или запись. Этот класс обеспечивает только базовые средства для
ввода-вывода. Операции ввода-вывода выполняются с помощью функций
streambuf.
Элементы данных
openprot | Заданная по умолчанию защита файла. Определяет разрешение чтения из файла и записи в файл.
|
Функции-элементы
constructor | Создает filebuf, не подключенный к файлу, или
подключенный к файлу с заданным дескриптором.
|
attach | Связывает закрытый filebuf с файлом, заданным
дескриптором. Если файловый буфер уже открыт,
возвращает NULL.
|
close | Выводит содержимое буфера и закрывает файл.
Обычно не требует явного вызова, т.к. закрытие обеспечивается деструктором. В случае
ошибки возвращает 0.
|
fd | Возвращает дескриптор файла или EOF.
|
is_rtl_open | Возвращает в случае открытия файла ненулевое
значение.
|
open | Открывает файл, заданный именем, и подключается к нему. Режим открытия задается аргументом режима.
|
overflow | Выводит буфер по указанному назначению. Выполняемые действия должны определяться в каждом классе.
|
seekoff | Устанавливает указатель по заданному смещению, перемещая его в заданном направлении относительно текущей позиции. Возвращает значение позиции.
|
setbuf | Выделяет буфер заданного размера для использования в качестве в filebuf. Если файл уже открыт, а буфер выделен, то происходит ошибка, и sefbuf возвращает NULL.
|
sync | Согласовывает внутренние структуры данных и
внешнее представление потока.
|
underflow | Делает ввод доступным. Вызывается при отсутствии данных во входном буфере.
|
Класс fstream (fstream.h)
Этот потоковый класс является производным от fstreambase и
iostream и выполняет с помощью filebuf одновременный ввод и вывод.
Функции-элементы
Constructor | Создает fstream, не подключенный или подключенный к файлу с заданным дескриптором.
|
open | Открывает для fstream файл, заданный именем
и режимом открытия.
|
rdbuf | Возвращает используемый filebuf.
|
Класс fstreamable (fstream.h)
Этот производный от ios класс обеспечивает общие для файловых потоков операции. Он используется в качестве базового для
fstream, ifstream и ofstream.
Функции-элементы
Constructor | Создает fstreambase, не подключенный или подключенный к файлу с заданным дескриптором.
|
attach | Связывает с дескриптором открытого файла.
|
open | Закрывает соответствующий filebuf и файл.
|
rdbuf | возвращает используемый filebuf.
|
setbuf | Резервирует указанную область памяти, способную вместить указанное число байт.
|
Класс ifstream (fstream.h)
Этот производный от fsreambase потоковый класс обеспечивает
операции ввода через filebuf.
Функции-элементы
Constructor | Создает ifstrem, не подключенный к файла или
подключенный к заданному или открытому файлу.
|
open | Открывает файл для ifstream.
|
rdbuf | Возвращает используемый filebuf.
|
Класс ios (iostream.h)