我想将变量参数传递给makecontext
函数,如下所示。
void a(...)
{
....
makecontext( &stack, &func, ?, ? );
....
}
在第三个参数(?
)中,我应该有变量参数的数量,而在下一个?
中,我应该拥有所有参数。怎么办呢?
答案 0 :(得分:2)
可变参数函数无法知道它获得的参数数量。此信息不会以任何方式传递给它
唯一的方法是通过惯例,呼叫者需要尊重
两个共同的惯例:
1.第一个参数之一是参数的数量
2.所有参数都是指针,最后一个参数必须为NULL。
请注意,printf
也不知道传递给它的内容。它只计算格式字符串中的百分号,并假设它具有匹配数量的参数。