如何确定发送给函数的参数数量?

How do I determine how many arguments that are being sent to a function?

如果我有一个 C 函数,其中一个参数是“...”,我如何确定是否有两个以上的参数被传递给该函数?如果发送到 my_func() 的第三个参数是 int arg2,我该如何访问它?

#include <stdio.h>
int my_func(int arg0, int arg1, ...)
{
    /* How can I determine if 2 or 3 arguemnts are being passed to
     * this function? How do I access the third argument so I could
     * print it out? */
     return 0;
}
int main() {
    my_func(1,2);
    my_func(1,2,3);
    
    return 0;
}

在 C 中,您无法仅从参数中推断出有多少参数被发送到函数。您需要一些支持信息,通常是参数本身传递的信息之一。例如,对于众所周知的 printf,第一个参数是一个格式字符串,解析它会告诉函数它应该接收多少个其他参数以及它们的类型。