count 参数是否应该直接在可变参数函数中的省略号 (..) 之前声明
Should the count parameter be declared directly before the ellipsis (...) in a variadic function?
这是va_start
宏的实现:
#define va_start(list, param) (list = (((va_list)¶m) + sizeof(param)))
如您所见,va_start
宏通过假设参数变量直接存在于 count
参数之后来返回参数变量列表中第一个字节的地址(我的意思是 count
参数我声明的参数名称我将传递给参数的数量)。
因此,如果我除了使用count
参数之外还使用其他参数,是否应该直接在省略号(...)之前声明count
参数?
va_start()
应始终使用最后一个命名参数调用,例如
void function(int x, int y, int z, ...)
{
va_list ap;
va_start(ap, z);
.
.
.
va_end(ap);
}
因此,如果我除了使用计数参数之外还使用其他参数,是否应该直接在省略号 (...) 之前声明 count 参数?
是的,如果您想以这种方式使用va_start()
va_list ap;
va_start(ap, count);
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 可变参数模板和省略号有什么区别?
- C++参数列表中带有省略号的 lambda
- 使用可变参数模板函数包装基于省略号的函数
- count 参数是否应该直接在可变参数函数中的省略号 (..) 之前声明
- 省略号函数参数的大小(以字节为单位)
- 如何将参数从省略号运算符传递到其他函数
- 转发省略号参数时丢失数据
- 为什么在没有参数的情况下调用省略号比可变参数模板更可取?
- 令牌的含义是什么"... ..."?即参数包上的双省略号运算符