在可变函数中的void *

时间:2013-04-03 06:01:06

标签: objective-c void-pointers variadic-functions

我正在尝试创建一个接受任意数量参数的方法,这些参数将用于创建NSInvocation(一个方法的对象包装器)。 void指针可以作为参数在可变参数函数中传递,还是编译器需要知道提前传递的类型的大小? NSInvocation实例方法" setArgument:(void *)atIndex:index"通常是这样做的。

-(void)addArguments:(void *)argument, ... {
    va_list args;
    va_start(args, argument);

    int index = 2;
    void *value;
    [self.invocation setArgument:argument atIndex:index];
    index++;

    while ((value = va_arg(args, void*)))
    {
        [self.invocation setArgument:value atIndex:index];
        index++;
    }
    va_end(args);
    return;
}

0 个答案:

没有答案