Описание функций Си


         

va_end Данная макрокоманда способствует нормальному


va_end Данная макрокоманда способствует нормальному воз- врату вызываемой функции. Макрокоманда va_end мо- жет модифицировать param таким образом, что он не сможет быть использован до вызова va_start. va_end должна быть вызвана после того, как функ- ция va_arg прочтет все аргументы; попытка сделать иначе вызовет непредсказуемое поведение вашей программы.

Возвращаемое Функции va_start и va_end не имеют возвращаемых значение значений; va_arg возвращает текущий аргумент в списке (тот, который адресуется с помощью param).

Переносимость va_arg, va_start, va_end поддерживается на сис- темах UNIX.

Смотрите также Функции .. ..

Пример:

#include

#include

/* вычисляет сумму, завершаемого 0 списка */ void sum(char *msg, ...) { int total = 0; va_list ap; int arg; va_start(ap, msg); while ((arg = va_arg(ap,int)) != 0) { total += arg; } printf(msg, total); }

int main(void) { sum("Сумма 1+2+3+4 = %d\n", 1,2,3,4,0); }

Результат программы

Сумма 1+2+3+4 = 10

Пример 2:

#include

#include

void error(char *format,...) { va_list argptr; print("error: "); va_start(argptr, format); vprintf(format, argptr); va_end(argptr); }

int main(void) { int value = -1; error("this is just an error message\n"); error("invalid value %d encountered\n", value); }

Результат программы:

error: this is just an error message error: invalid value -1 encountered


Содержание  Назад  Вперед