1. 함수의 가변 인수 선언하기 [Bottom] [Top]
1 void Output( char * szMsg, ... ) // ... --> 가변 인수 2 { 3 ... 4 }
2. printf 함수군 처럼 가변 인수 사용하기 [Bottom] [Top]
1 void Output( char * szMsg, ... ) 2 { 3 char szBuffer[256]; // STEP 1 4 va_list vargs; // STEP 2 5 6 va_start( vargs, szMsg ); // STEP 3 7 ::vsprintf( szBuffer, szMsg, vargs ); // STEP 4 8 va_end( vargs ); // STEP 5 9 10 printf( szBuffer ); // STEP 6 11 }
3. 전달받은 가변 인수를 다른 함수의 인수로 전달하기 [Bottom] [Top]
1 void Output( char * szMsg, ... ) 2 { 3 va_list vargs; 4 5 va_start( vargs, szMsg ); 6 OutputA( szMsg, vargs ); // 가변 인수 전달 7 va_end( vargs ); 8 } 9 10 void OutputA( char * szMsg, va_list vargs ) 11 { 12 char szBuffer[256]; 13 14 ::vsprintf( szBuffer, szMsg, vargs ); 15 16 printf( szBuffer ); 17 }
4. 매크로에서 가변 인수 사용하기 [Bottom] [Top]
1 #define OUTPUT1(...) printf(__VA_ARGS__); 2 #define OUTPUT2(s, ...) printf(s, __VA_ARGS__); 3 #define OUTPUT3(x, ...) if(!(x)) { printf(__VA_ARGS__); }
참고> Visual Studio 2005 이상에서만 지원한다.
