C/C++ 几种不定参数传参方法

在ioctrl、setopt、sendEvent等类似API中,通常第一个参数是类型(操作、事件类型),第二个参数是该类型对应的参数,不同的类型对应的参数类型及个数都是不同的,这就需要用到不定参数。下面介绍几种不定参数的传参方法。

  • 结构体指针
    将每个操作对应的参数封装为一个结构体,第二个参数类型定义为void *,传递结构体指针的方式传递不同的参数。
  • va_list
    VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数。
    原理:函数参数是存储在栈中的,函数参数从右往左依次入栈,使用时依次出栈,按照每个事件对应参数的类型及顺序将出栈的参数转换出来。
  • Android Parcel
    Parcel是android实现的一个类,用于封装不同的数据类型,原理类似va_list,使用时需按照参数原排列顺序依次读取。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值