我知道这个问题已经问过很多次了,但是很抱歉,我找不到答案。以下是带有参数的函数(有多少个未知参数)。如何获取所有参数,然后打印它们?
int func(int a, int b, ...) {
// print the parameters
}
答案 0 :(得分:1)
简短的回答是“你不这样做”。 C没有提供任何机制来知道参数何时结束。
如果要使用varargs,则需要给自己提供一种机制,该机制可以告诉您有多少个参数以及每个参数有多大。以最著名的示例为例,printf()要求其第一个参数为格式字符串,以告知其有关可变参数及其大小的信息。
如果您知道所有参数都将具有相同的大小(例如,整数),则可以设计例程,以便第一个参数是参数的数量,例如:
void
my_func (int n_args, ...)
{
va_list ap;
int i;
va_start(ap, n_args);
for (i = 0 ; i < n_args ; i++) {
process(va_arg(ap, int));
}
va_end(ap);
}