【发布时间】:2012-01-09 15:29:21
【问题描述】:
我想将变量参数传递给makecontext函数,如下所示。
void a(...)
{
....
makecontext( &stack, &func, ?, ? );
....
}
在第三个参数(?)中,我应该有变量参数的数量,而在下一个?,我应该有所有的参数。如何做到这一点?
【问题讨论】:
-
此问题已回答here
我想将变量参数传递给makecontext函数,如下所示。
void a(...)
{
....
makecontext( &stack, &func, ?, ? );
....
}
在第三个参数(?)中,我应该有变量参数的数量,而在下一个?,我应该有所有的参数。如何做到这一点?
【问题讨论】:
可变参数函数无法知道它获得的参数数量。此信息不会以任何方式传递给它。
唯一的方法是按照约定,调用者需要尊重。
两种常见约定:
1. 第一个参数是参数的数量。
2.所有参数都是指针,最后一个必须为NULL。
请注意,printf 也不知道传递给它的内容。它只计算格式字符串中的百分号,并假设它得到了匹配数量的参数。
【讨论】: