C, вызов функции с переменным количеством параметров
От: playnext  
Дата: 05.03.14 19:57
Оценка: -1
Подскажите как из функции с переменным количеством параметров вызвать другую функцию с переменным количеством паараметров. А в идеале разные функции с различными параметрами.
Как пример

// это типа функтора. принимает один произвольный аргумент и далее сколько хочет пользователь 
// разных аргументов
typedef void (*fn1) (int val, ...);

// здесь некий код который использует произвольный функтор
// необходимые функтору параметры тоже здесь
void perfOp(int* val, fn1 f, ...)
{
    va_list args;

    if (f)
    {
        va_start(args, f);
                // здесь фукктор вызывается с параметрами, но это не работает
        f(val, args);
        va_end(args);
    }
}

void someOp(int* val, ...)
{
    va_list args;
    int a,b,c;
    va_start(args, val);
    a = va_arg(args,int); // не 3
    b = va_arg(args,int); // не 1
    c = va_arg(args,int); // не 5
    va_end(args);
    // что то полезное
}

// в идеале хотелось бы передавать разные функции, вполне определенные
// как например
void anotherOp(int* val, int a, int b, int c)
{
    // что то полезное
}

int main(int argc, char* argv[])
{
    int val = 2;
    perfOp(&val, someOp, 3, 1, 5);
        perfOp(&val, anotherOp, 3, 1, 5);
    return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.