Я хочу реализовать функцию с переменным числом аргументов.Эта функция позволяет мне вызывать другую функцию, используя список необязательных аргументов.Цель этой функции - вызвать любую функцию в зависимости от некоторых условий (в зависимости от вызываемых функций, если два первых аргумента равны, мы вызываем функцию).Моя проблема в том, что вызываемые функции не имеют одинакового количества аргументов и, следовательно, я не знаю, как передавать аргументы каждый раз, когда у меня есть другая функция
Например, если у меня естьэто:
void func(int value_to_compare, int compared_value, int arg_number, char *arg_types, char *function_name, ...)
Я могу назвать это следующим образом:
char arg1;
int arg2, arg3;
int condition1;
func(condition1, 1, 1, "c", func1, arg1);
func(condition1, 0, 2, "ci", func2, arg1, arg2);
func(arg2, 0 , 3, "cii", func3, arg1, arg2, arg3);
и вызываемые функции имеют вид:
func1(char);
func2(char, int);
func3(char, int, int);
Я попытаюсь объяснить больше, если янапример:
struct element_list {
char *element_type;
char *element_name;
}
структуры в моем случае имеют большое количество элементов, условие должно быть передано в качестве аргумента функции, а значение условия зависит от контекста, поэтому я долженчтобы иметь возможность вызывать 'func' в любом контексте, я просто даю условие и значение, и затем функция будет вызываться с соответствующими аргументами, так что это будет что-то вроде
func(element_list.element_type, "CHAR", func1, "s", element_list.element_name);
в дополнение ку меня огромное количество функций и огромное количество условий, поэтому мне нужно что-то настолько универсальное, насколько это возможно.