Variadic functions
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
가변 인수 함수는 std::printf 와 같이 가변 개수의 인수 를 받는 함수입니다.
가변 인수 함수를 선언하려면 매개변수 목록 뒤에 줄임표가 나타납니다. 예를 들어 int printf ( const char * format... ) ; 와 같으며, 선택적으로 쉼표가 앞에 올 수 있습니다. 구문, 자동 인수 변환 및 대안에 대한 추가 세부 사항은 가변 인수 를 참조하십시오.
함수 본문에서 가변 인수에 접근하기 위해 다음과 같은 라이브러리 기능들이 제공됩니다:
|
헤더 파일에 정의됨
<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
|