printf처럼 함수에 여러 매개변수 전달하기
함수에 가변인수를 주는 예제를 하나 작성해보았다.
[CODE type=cpp]#include <stdio.h>
#include <stdarg.h> // va_ 매크로를 사용하기 위한 헤더
int Test( const char *args, ... )
{
va_list ap; // 변수 선언
va_start( ap, args ); // args에 들어온 자료의 처음을 ap란 변수에 넣는다.
while( args != 0 )
{
printf("%s\n", args);
// const char *형의 다음 자료를 하나 가져온다.
args = va_arg( ap, const char * );
}
va_end( ap ); // args 를 종료한다.
return 0;
}
int main( void )
{
Test( "Test1", "Test2", "Test3", "Test4" );
return 0;
}[/CODE]
#include <stdarg.h> // va_ 매크로를 사용하기 위한 헤더
int Test( const char *args, ... )
{
va_list ap; // 변수 선언
va_start( ap, args ); // args에 들어온 자료의 처음을 ap란 변수에 넣는다.
while( args != 0 )
{
printf("%s\n", args);
// const char *형의 다음 자료를 하나 가져온다.
args = va_arg( ap, const char * );
}
va_end( ap ); // args 를 종료한다.
return 0;
}
int main( void )
{
Test( "Test1", "Test2", "Test3", "Test4" );
return 0;
}[/CODE]
va_list : 데이터 타입으로 사용자가 입력한 값이 저장되는 공간입니다.
va_start(va_list argptr, arg_data_type) : 2개의 인자를 받는 매크로입니다.
va_arg(va_list argptr, T) : 다음 인자가 있을 경우 그 곳으로 이동하는 매크로입니다.
va_end(va_list argptr) : 가변 인자 처리 끝났음을 알리는 매크로입니다.
출처 : 가변인수의 예제
va_start 함수의 설명