Вариативные функции
Материал из ru.cppreference.net
Вариативные функции — это функции (например, std::printf), которые принимают переменное количество аргументов.
Чтобы объявить вариативную функцию, после списка параметров ставится многоточие, например int printf(const char* format...);, которому может предшествовать необязательная запятая. Дополнительные сведения о синтаксисе, автоматических преобразованиях аргументов и альтернативах см. в разделе Вариативные аргументы.
Для доступа к вариативным аргументам из тела функции предоставляются следующие библиотечные средства:
Определено в заголовке
<cstdarg> | |
| обеспечивает доступ к аргументам вариативной функции (функция-макрос) | |
| получает следующий аргумент вариативной функции (функция-макрос) | |
(C++11) |
создаёт копию аргументов вариативной функции (функция-макрос) |
| завершает обход аргументов вариативной функции (функция-макрос) | |
| содержит информацию, необходимую для va_start, va_arg, va_end и va_copy (определение типа) | |
Пример
Запустить этот код
#include <cstdarg> #include <iostream> void simple_printf(const char* fmt...) // C-style "const char* fmt, ..." is also valid { va_list args; va_start(args, fmt); while (*fmt != '\0') { if (*fmt == 'd') { int i = va_arg(args, int); std::cout << i << '\n'; } else if (*fmt == 'c') { // note automatic conversion to integral type int c = va_arg(args, int); std::cout << static_cast<char>(c) << '\n'; } else if (*fmt == 'f') { double d = va_arg(args, double); std::cout << d << '\n'; } ++fmt; } va_end(args); } int main() { simple_printf("dcff", 3, 'a', 1.999, 42.5); }
Вывод:
3 a 1.999 42.5
Смотрите также
|
Документация C
для
Вариативных функций
|