va_arg 与 void* 列表

Ham*_*aya 0 c c++ pointers

我想创建一个函数,它采用可变数量的空指针,

val=va_arg(vl,void*);
Run Code Online (Sandbox Code Playgroud)

但以上不起作用,是否有可移植的方式使用其他类型而不是 void* 来实现这一点?

Mic*_*son 5

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

void
myfunc(void *ptr, ...)
{
    va_list va;
    void *p;

    va_start(va, ptr);
    for (p = ptr; p != NULL; p = va_arg(va, void *)) {
        printf("%p\n", p);
    }
    va_end(va);
}

int
main() {
    myfunc(main,
           myfunc,
           printf,
           NULL);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Fedora 14 ..