簡體   English   中英

帶有無效列表的va_arg *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM