我想创建一个带有可变数量的void指针的函数,
val=va_arg(vl,void*);
但是上面不起作用,是否有可行的方法来实现这个使用其他类型而不是void *?
答案 0 :(得分:4)
#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;
}
我正在使用Fedora 14 ..
答案 1 :(得分:1)
由于你有一个C ++标签,我会说“不要这样做”。相反,要么像流一样使用插入运算符,要么只传递(const) std::vector<void*>&
作为函数的唯一参数。
然后你不必担心varargs的问题。