将变量参数传递给makecontext函数

时间:2012-01-09 15:29:22

标签: c linux gcc x86

  

可能重复:
  Forward an invocation of a variadic function in C

我想将变量参数传递给makecontext函数,如下所示。

void a(...)
{ 
 ....
 makecontext( &stack, &func, ?, ? );
 ....
}

在第三个参数(?)中,我应该有变量参数的数量,而在下一个?中,我应该拥有所有参数。怎么办呢?

1 个答案:

答案 0 :(得分:2)

可变参数函数无法知道它获得的参数数量。此信息不会以任何方式传递给它 唯一的方法是通过惯例,呼叫者需要尊重 两个共同的惯例:
1.第一个参数之一是参数的数量 2.所有参数都是指针,最后一个参数必须为NULL。

请注意,printf也不知道传递给它的内容。它只计算格式字符串中的百分号,并假设它具有匹配数量的参数。