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]


va_list : 데이터 타입으로 사용자가 입력한 값이 저장되는 공간입니다.

va_start(va_list argptr, arg_data_type) : 2개의 인자를 받는 매크로입니다.

va_arg(va_list argptr, T) : 다음 인자가 있을 경우 그 곳으로 이동하는 매크로입니다.

va_end(va_list argptr) : 가변 인자 처리 끝났음을 알리는 매크로입니다.


출처 : 가변인수의 예제
va_start 함수의 설명



Powered by Tattertools