相关疑难解决方法(0)

是否可以在C中具有可变参数函数且没有非可变参数?

我有以下功能:

void doStuff(int unusedParameter, ...)
{
    va_list params;
    va_start(params, unusedParameter);
    /* ... */
    va_end(params);
}
Run Code Online (Sandbox Code Playgroud)

作为重构的一部分,我想删除未使用的参数,而不另行更改函数的实现.据我所知,va_start当你没有最后一个非变量参数引用时,就不可能使用它.有没有办法解决?

背景:它实际上是一个C++程序,所以我可以使用这里建议的一些运算符重载魔法,但我希望此时不必更改接口.

现有函数通过要求变量参数列表以空值终止并扫描NULL来完成其工作,因此它不需要一个前导参数来告诉它有多少参数.

在回应评论:我不具备删除未使用的参数,但我会做到这一点,如果有一个干净的方式来做到这一点.我希望有一些我想念的简单.

c variadic-functions

16
推荐指数
2
解决办法
2694
查看次数

标签 统计

c ×1

variadic-functions ×1