c语言中的可变参数传值
来源:互联网 发布:2016年养殖业数据 编辑:程序博客网 时间:2024/06/05 19:08
在学习rstp代码中有调试打印函数stp_trace(),系统提供了两个,一个是宏实现的,一个是函数(但未实现),需要自己写,于是参看资料写了一个
1、宏实现:
#define stp_trace(F, B...) printf("%s:" F "\n", sprint_time_get(), ##B)
2、函数实现
int stp_trace(const char* fmt, ...)
{
int rusult;
va_list args;
char printf_buf[512];
va_start (args, fmt);
rusult = vsprintf(printf_buf, fmt, args);
va_end (args);
if(rusult<0)
return -1;
return printf(" %s: %s", sprint_time_get(), printf_buf);
}
另说明:
1、va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参数列表中的参数,必须声明va_list类型的一个对象 定义: typedef char * va_list;
2、va_start:访问变长参数列表中的参数之前使用的宏,它初始化用va_list声明的对象,初始化结果供宏va_arg和va_end使用;
3、va_arg: 展开成一个表达式的宏,该表达式具有变长参数列表中下一个参数的值和类型。每次调用va_arg都会修改用va_list声明的对象,从而使该对象指向参数列表中的下一个参数;
4、va_end:该宏使程序能够从变长参数列表用宏va_start引用的函数中正常返回。
上面4个函数都在#include <stdarg.h>; 中
- c语言中的可变参数传值
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- c语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- C语言中的可变参数
- c语言中的可变参数
- C语言中的可变参数。
- C语言中的可变参数。
- C语言中的可变参数
- C语言中的可变长参数(转载)
- C语言中的可变参数函数
- C语言中的可变参数函数
- C语言中的参数可变函数
- Ubuntu下samba的安装设置
- 比较两个字符串
- Android音频系统之音频框架
- LSAT的逻辑组题 6
- C++ 二维数组动态创建和内存释放
- c语言中的可变参数传值
- 蓝洁瑛白发苍老 自曝曾遭两影坛大哥强奸
- 并行查询的执行计划解读
- request.getRealPath("/")
- 在eclipse LDT(Koneki)中搭建quick-cocos2d-x的lua开发环境
- 单独编译android系统中的模块
- mongodb基础系列—主从复制具体搭建以及解说
- 关于SystemUI的简单小记
- div+css模拟京东导航