【发布时间】:2013-04-04 08:14:03
【问题描述】:
在 C 中,我们可以使用可变参数函数,例如:
void abc(int x, .. )
{
}
我们可以使用可变数量的参数来调用它们,例如:
abc(1,2,3) or abc(1,2,3,4,5)
但是,在上述两个函数调用中,我们调用了可变参数函数abc,并使用了我们已知的参数;第一种情况是“1, 2, 3”,第二种情况是“1, 2, 3, 4, 5”。
我的问题是:
有没有什么方法可以在运行时调用具有可变数量参数的可变参数函数?
例如,在main() 中,我要求用户输入一定数量的输入,然后使用参数 p1、p2、p3 等将这些输入传递给可变参数函数...
【问题讨论】:
-
这听起来像是又一次寻找不必要的复杂解决方案,以使事情变得复杂。您甚至不需要在 C 程序中使用 va_list,它们是该语言的一个多余特性。
-
@Lundin 我觉得
printf相当漂亮。我可以想象在其他情况下变量参数列表是有用的,尽管不是绝对必要的。 -
@KlasLindbäck 虽然 printf/scanf 函数功能强大,但它们也非常复杂、缓慢、低效且非常不安全(没有类型安全、可能的缓冲区溢出等)。最重要的是,它们在语法上偏离了语言的其余部分。就个人而言,我认为它们非常可怕。不管你怎么看这些函数,程序员应该没有必要创建自己的 printf 函数,所以 va_lists 是相当多余的。
-
@Lundin,请写
printf(3),不要写va_list,然后与我们联系。有 are 用途(我自己编写了一些 varags 函数)。不经常,理所当然。
标签: c variadic-functions