2009-07-24 2 views

답변

7

예를 들어 here을보십시오.

#include <stdlib.h> 
#include <stdarg.h> 
#include <stdio.h> 

int maxof(int, ...) ; 
void f(void); 

main(){ 
     f(); 
     exit(EXIT SUCCESS); 
} 

int maxof(int n args, ...){ 
     register int i; 
     int max, a; 
     va_list ap; 

     va_start(ap, n args); 
     max = va_arg(ap, int); 
     for(i = 2; i <= n_args; i++) { 
       if((a = va_arg(ap, int)) > max) 
         max = a; 
     } 

     va_end(ap); 
     return max; 
} 

void f(void) { 
     int i = 5; 
     int j[256]; 
     j[42] = 24; 
     printf("%d\n",maxof(3, i, j[42], 0)); 
} 
0

이러한 함수는 calle 가변이지만, 이러한 함수는 처음에는 보이는 것보다 훨씬 유용하지 않습니다. 화제에 wikipedia page는 나쁘지 않고, C 부호가있다.

이러한 기능의 기본 문제는 매개 변수의 수를 실제로 가변 할 수 없다는 것입니다. 매개 변수의 수는 알려진 매개 변수로 컴파일 할 때 고정되어야합니다. 이것은 printf에서 분명합니다.

printf ("% s % d", "Value is", 42);

% 지정자의 수는 실제 값의 수와 일치해야하며, C의 다른 가변 함수를 한 가지 형식으로 사용하는 경우에도 마찬가지입니다.

관련 문제