有没有办法在可变参数函数中指定默认参数?(同样适用于模板)
为什么你需要变参和默认参数?
举个例子,
myFunc(int a=5, int b=5, int c=5);
可以接收0-3个参数,带有默认值。
myFunc(...)
这个函数可以接收任意数量的参数。在函数内部,您可以检查缺少的参数并根据需要填充默认值。
默认参数是指函数应该并且将会看到提供的参数。因此,您应该明确命名这些参数,然后可以提供默认参数。这将是您函数的“简短”版本。
如果除了这些默认参数之外,您还想拥有一个va_arg
参数列表的可能性,只需重载您的函数以提供完全相同的功能即可。对于这个“长”版本,您无论如何都必须提供所有参数,因此在这里使用默认参数没有任何意义。
也许您并没有考虑过这样一件事情,但是使用C99的va_arg
宏特性,也可以为C语言中的函数定义默认参数。在这种情况下,宏语法比C++更加宽松,因为您可以省略函数调用中间的参数,而不仅仅是在末尾省略。因此,如果您声明函数类似于以下方式:
int toto(int a, ...)
如果你指定了第二和第三个位置的默认参数,那么你可以这样调用它:
toto(4,5,,,37);
因此,在C语言中,可以做到您所要求的。但我个人肯定会犹豫不决。
没有办法做到这一点。
=something
符号),也没有模板(正如Kirill已经指出的那样)。 - Jens Gustedt