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

标签 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, ????? ) ?

最佳答案

这根本不可能。你必须有一个非可变参数,总是。在你的情况下

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

可以工作。

关于c - 没有第一个参数的可变参数 - va_start 属于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40846170/

相关文章:

c - ARM架构下调用函数的GCC返回地址

c++ - 在Windows上使用va_copy是否安全?

c++ - 用于创建字符串的 Variadic 模板函数

c - 如何模糊 stdarg.h 函数?

c++ - 在 Borland C++ 编译器 5.5 中询问文件 .obj 和 .tds

c - 学习 gcc 内部结构

c - 指向 C 多维数组的指针的地址

c - 是否需要 %c fprintf 说明符来获取 int 参数

c - GCC 是否错误处理了指向传递给函数的 va_list 的指针?

c - C中的嵌套动态结构?