没有第一个参数的变量参数 - 什么属于va_start?

时间:2016-11-28 14:02:44

标签: c variadic-functions

我想让varargs函数一次释放多个指针,主要是为了清理代码。所以我有:

void free_all( ... ) {
    va_list arguments;
    /* Initializing arguments to store all values after last arg */
    // but there are no args!
    va_start ( arguments, ????? );
    /* we expect the caller to send last argument as NULL **/
    void* pointer = va_arg ( arguments, void* );
    while( (pointer = va_arg ( arguments, void* ))!=NULL ) {
        free(pointer);
    }
    va_end ( arguments );                  // Cleans up the list
}

那么放入va_start ( arguments, ????? )的内容是什么?

1 个答案:

答案 0 :(得分:4)

根本不可能。你必须始终有一个非vararg论点。在你的情况下

void free_all(void *first, ...);

可行。