C выполнить функцию со списком аргументов - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно оценить функцию со списком аргументов из массива аргументов, как в этом примере:

int compute(...) {
    int n;
    va_list params;
    va_start(params, n);
    // some custom computation with no "va" output
    va_end(params);
}

И некоторый массив int (который является динамическим массивом, не полагается на фиксированный размер):

int arr[10] = {0, 1, 3, 7, 8, 1, 3, 5, 7, 9};

И мне нужно вызвать compute как функция JS compute.apply(this, arr)

Я реализую некоторую библиотеку на C, поэтому она мне нужна.

ВC ++ это std :: apply но я хочу то же самое в C.

Спасибо

1 Ответ

1 голос
/ 17 октября 2019

В C ++ это std :: apply , но я хочу того же в C.

Поскольку вы хотите то же самое в C вы наверняка признаете, что должны соответствовать тем же требованиям, в частности, что кортеж поддерживает std::get и std::tuple_size, их эквиваленты C. Теперь, пока к аргументам из массива обращаются по порядку от первого до последнего, std::get может быть реализован с помощью va_…(), но так же, как списки аргументов переменных stdarg требуют некоторых средств определенияколичество аргументов (например, строка формата или количество аргументов), std::tuple_size не может быть реализовано без таких средств. Вам не обойтись без передачи этой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...