Книга: Язык программирования Си. Издание 3-е, исправленное
B7. Списки аргументов переменной длины:
B7. Списки аргументов переменной длины: <stdarg.h>
Заголовочный файл <stdarg.h> предоставляет средства для перебора аргументов функции, количество и типы которых заранее не известны. Пусть lastarg - последний именованный параметр функции f с переменным числом аргументов. Внутри f объявляется переменная ap типа va_list, предназначенная для хранения указателя на очередной аргумент:
va_list ар;
Прежде чем будет возможен доступ к безымянным аргументам, необходимо один раз инициализировать ap, обратившись к макросу va_start:
va_start(va_list ap, lastarg);
С этого момента каждое обращение к макросу:
type va_arg(va_list ap, type);
будет давать значение очередного безымянного аргумента указанного типа, и каждое такое обращение будет вызывать автоматическое приращение указателя ap, чтобы последний указывал на следующий аргумент. Один раз после перебора аргументов, но до выхода из f необходимо обратиться к макросу
void va_end(va_list ap);
- B1. Ввод-вывод: ‹stdio.h›
- B2. Проверки класса символа: ‹ctype.h›
- B3. Функции, оперирующие со строками:
- B4. Математические функции:
- B5. Функции общего назначения:
- B6. Диагностика:
- B7. Списки аргументов переменной длины:
- B8. Дальние переходы:
- B9. Сигналы:
- B10. Функции даты и времени: ‹time.h›
- B11. Зависящие от реализации пределы: и
- 8.3.2. Списки аргументов переменной длины: объект Arguments
- 7.3 Списки аргументов переменной длины
- Использование переменной окружения ISC_PATH
- Стандартные списки
- Отправка данных в списки SharePoint по электронной почте
- Списки, запятые и командные строки
- Нумерованные и маркированные списки
- 26.7. Обработка дополнительных аргументов
- Списки
- 5 Система Цикл: списки дел и расписания
- Объявление переменной на внутреннем уровне
- Пример 12-39. Использование seq для генерации списка аргументов цикла for