// ( t15.C ) // 可変引数の表わし方 // /* C言語で使えた。何となく分かりにくい機能なので、掲載した。*/ #include #include void PRINT( char* msg ... ) // msg の最初の引数は文字列でなければならない { va_list ap ; va_start( ap,msg ) ; cout << msg << endl ; cout << va_arg( ap,int ) << endl ; cout << va_arg( ap,char* ) << endl ; cout << va_arg( ap,int ) << endl ; cout << va_arg( ap,char* ) << endl ; va_end( ap ) ; } void PRINT2( const char* msg ... ) // const も付けてみました { va_list ap ; va_start( ap,msg ) ; cout << msg << endl ; int i ; while ( (i=va_arg(ap,int)) != -1 ) { cout << i << " " ; cout << va_arg( ap,char* ) << endl ; } va_end( ap ) ; } void PRINT3( int i,char* msg,... ) // msg,... または msg ... と表わす { va_list ap ; va_start( ap,msg ) ; cout << "Number : " << i << endl ; cout << msg << endl ; int i ; while ( (i=va_arg(ap,int)) != -1 ) { cout << i << " " ; cout << va_arg( ap,char* ) << endl ; } va_end( ap ) ; } main() { PRINT( "NAME",1,"katou",2,"haruo" ) ; PRINT2( "NAME",1,"katou",2,"haruo",-1 ) ; PRINT3( 20,"NAME",1,"katou",2,"haruo",-1 ) ; }