Глава 12. Библиотечные функции Borland C++_______________________299

CurTime->ti_hund) ;

cout « "The system time is: " « TimeString « endl « endl;

}

Результат работы программы из листинга 12.14 приведен на рис. 12.7. В первой строке выведено время, установленное в системных часах вашего компьютера. Перед тем как изменить это время, программа его сохраняет, а перед выходом из программы восстанавливает исходное значение.

h02991.jpg

Рис. 12.7. Использование функций gettime () И settime ()

Работа со списками аргументов переменной длины

Одним из мощных средств С и C++ является возможность создания функций, принимающих переменное число аргументов. Примеры таких функций вам уже встречались — printfo и sprintft). Количество аргументов этих функций теоретически не ограничено.

В Borland C++ предусмотрено несколько функций, объявляемых таким образом, чтобы они принимали и обрабатывали переменное число аргументов. Доступ к списку аргументов переменной длины обеспечивается специальным типом данных va_list и тремя предопределенными макросами:

va_start, va_arg и va_end. Макрос va_start вызывается для инициализации указателя на список аргументов переменной длины. Макрос va_arg возвращает следующий элемент списка и продвигает указатель к следующему аргументу. После обработки всех аргументов из списка следует вызывать макрос va_end; без этого поведение вашей программы может стать непредсказуемым.

Это звучит гораздо сложнее, чем есть на самом деле. Взгляните на функцию Addints() (листинг 12.15), которая принимает любое количество целочисленных аргументов и возвращает их сумму.