가변 인자 함수
출처: ko.cppreference.net
가변 인자 함수는 (예: std::printf) 가변 개수의 인수를 받는 함수입니다.
가변 인자 함수를 선언하려면 매개변수 목록 뒤에 줄임표가 나타납니다(예: int printf(const char* format...);). 선택적으로 쉼표가 앞에 올 수 있습니다. 구문, 자동 인수 변환 및 대안에 대한 자세한 내용은 Variadic arguments를 참조하세요.
함수 본문에서 가변 인자에 접근하려면 다음 라이브러리 기능이 제공됩니다.
헤더
<cstdarg> | |
| 가변 인자 함수 인수에 대한 접근을 활성화합니다 (함수 매크로) | |
| 다음 가변 인자 함수 인수에 접근합니다 (함수 매크로) | |
(C++11) |
가변 인자 함수 인수의 복사본을 만듭니다 (함수 매크로) |
| 가변 인자 함수 인수의 순회를 종료합니다 (함수 매크로) | |
| va_start, va_arg, va_end, 및 va_copy 에 필요한 정보를 보관합니다(typedef) | |
예제
이 코드 실행
#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 문서
참조:
Variadic functions
|