[英]va_arg with a list of void*
我想創建一個函數,該函數需要可變數量的void指針,
val=va_arg(vl,void*);
但是以上方法不起作用,是否有使用其他類型而不是void *的可移植方法來實現此目的?
#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。
由於您具有C ++標記,因此我將說“不要這樣”。 相反,要么像流一樣使用插入運算符,要么僅將(const) std::vector<void*>&
作為函數的唯一參數傳遞。
然后,您不必擔心varargs的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.