什么...在c代码中意味着什么

时间:2017-06-04 13:19:18

标签: c wiredtiger

我正在阅读wiredtiger的代码。我将函数定义视为

WT_CURSOR::set_key(WT_CURSOR * cursor, ...)

''是什么?意味着什么?编译器如何编译这样的代码?

由于

1 个答案:

答案 0 :(得分:6)

这意味着函数在命名参数之后接受可变数量的参数(可能为零)。该函数将使用va_list和相关函数(va_startva_argva_end)来处理参数。

一个例子:

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

// n: number of doubles
// ... list of doubles
double average(int n, ...)
{
    double accum = 0.0;
    int i;
    va_list vl;
    va_start(vl, n);

    for(i = 0; i < n; i++)
    {
        accum += va_arg(vl, double);
    }
    va_end(vl);
    return accum/(double)n;
}

int main()
{
    double avg = average(5, 1.0, 1.0, 6.5, 3.3, -5.8);
    printf("%f\n", avg);
    return 0;
}

输出:1.200000