如何执行具有可变数量参数的函数。 例如:
typedef enum{
Circle, /* has an int argument (int colour)*/
Square /* has a char argument (char name)*/
}things;
/* if arg is a ball I want an int (with colour) argument in f*/
/* if arg is a square I want a char (with name) argument in f*/
void f (things arg, ...){
}
这可以在同一个函数f中完成吗?感谢
答案 0 :(得分:0)
是。这是example如何完成的。
答案 1 :(得分:0)
这是example完成的,它找到了可变数字的最大值。
#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));
}