如何在C中打印功能参数?

时间:2018-07-09 22:29:03

标签: c parameters

我知道这个问题已经问过很多次了,但是很抱歉,我找不到答案。以下是带有参数的函数(有多少个未知参数)。如何获取所有参数,然后打印它们?

int func(int a, int b, ...) {
  // print the parameters
}

1 个答案:

答案 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);
}