C语言变长参数的认识以及宏实现
来源:互联网 发布:淘宝开店协议点同意 编辑:程序博客网 时间:2024/06/05 10:01
1.认识
变长参数是C语言的特殊参数形式,例如如下函数声明:
int printf(const char *format, ....);
如此的声明表明,printf函数除了第一个参数类型为const char*之外,其后可以追加任意数量、任意类型的参数。
printf的实现,粗略地举个例子。
假设lastarg是变长参数函数的最后一个具名参数(例如printf里的format),那么在函数内部定义类型的va_list的变量:
va_list ap;
该变量以后将会依次指向各个可变参数。ap必须用宏va_start初始化一次,使其指向第一个不定参数,其中lastarg必须是函数的最后一个具名参数。
va_start(ap, lastarg);
此后,可以使用va_arg宏来获取当前不定参数的值,并根据当前不定参数的类型将指针移向下一个参数(假如已其其类型为type):
type current = va_arg(ap, type);
在函数结束前,必须用宏va_end来清理现场。
变长参数的实现得益于C语言默认的cdecl调用惯例的自右向左压栈传递方式,个中细节不作详述。接下来用宏来实现变长参数。
2.宏实现
2 0
- C语言变长参数的认识以及宏实现
- C语言变长参数实现
- C语言变长参数实现
- C语言变长参数实现以及它们在栈上的分布
- C语言中变长参数的函数的实现
- 转载:c语言变长参数函数的实现
- java和c语言变长参数的底层实现区别
- C语言---变长参数列表---变长参数的使用
- C语言---变长参数列表---变长参数的传递
- C语言中不用宏实现变长参数函数的原理及实现
- C语言中不用宏实现变长参数函数的原理及实现
- C语言中不用宏实现变长参数函数的原理及实现
- C语言变长参数
- C语言变长参数
- c语言变长参数
- C语言的变长参数 va_arg
- C的变长参数
- C语言函数 变长参数
- COPY 构建亿级前端读服务
- cocos2dx3.0rc导出自定义类到lua的方法详细步骤
- 7. Document write() 方法
- HDU 1142(djstar+记忆化搜索)
- 程序员是否必须会算法
- C语言变长参数的认识以及宏实现
- windows 判断环境变量有无输入正确 echo %JAVA_HOME%
- [深入理解Android卷二 全文-第二章]深入理解Java Binder和MessageQueue
- Android Adb.exe工具使用
- css大会网站顶部的一个特效
- shell 总结 单引号 双引号 花括号
- 开发第一个Android应用之前你需要知道的六件事
- eclipse中新建分支
- 南邮 OJ 1025 完数