C/C++中的可变参数
2024-10-21 11:39:39
所需的函数参数不固定,需要用到带有可变参数的函数,类似printf();项目中需要打印信息等也会用到带可变参数的函数。
- C语言标准库的头文件 #include<stdarg.h>包含一组能够遍历可变长参数列表的宏,如下:
1 /*
2 va_list 用来定义一个指针变量,该指针变量表示参数列表中的各个参数;
3 */
4 va_list ap;
5
6 /*
7 初始化指针变量,ap指向函数参数列表中的第一个可选参数,v是第一个可选参数之前的固定参数
8 */
9 va_start(ap,v);
10
11 /*
12 返回参数列表中指针ap所指的参数,返回类型为type,并让ap指向参数列表的下一个参数
13 */
14 va_arg(ap,type);
15
16 /*
17 清空参数列表,并置指针无效
18 */
19 va_end(ap);
打印信息参考如下:
1 void addLog(const char* log, ...)
2 {
3 char chLog[8000];
4 va_list ap;
5 va_start(ap, log);
6 int ilength = vsprintf_s(chLog, log, ap);
7 chLog[ilength] = 0;
8 va_end(ap);
9
10 SYSTEMTIME st;
11 GetLocalTime(&st);
12 string szFile = "D:TestLog\\log.txt";
13 fstream fLog;
14 fLog.open(szFile.c_str(), ios::app | ios::in);
15 fLog << st.wYear << "-" << st.wMonth << "-" << st.wDay << " " << st.wHour
16 << ":" << st.wMinute << ":" << st.wSecond << " " << chLog << endl;
17
18 fLog.close();
21 }
使用:
const char* chLog = "WH WIN";
addLog("%s!", chLog);
参考:https://www.cnblogs.com/zhaobinyouth/p/8781915.html
最新文章
- HDU-1274 展开字符串
- 利用Jquery的load函数实现页面的动态加载
- [CTO]创业团队CTO应具备的素质
- 备忘录 - numpy基本方法总结
- 卡通投掷游戏ios源码
- 如何给10^7个数据量的磁盘文件排序--bitset
- jQuery基础学习5——JavaScript方法获取页面中的元素
- C# 代理HTTP请求
- js、jQuery操作input大全 不断完善
- Spring.NET学习笔记
- CoreAnimation
- 喜欢的女生快被别人抢走了,我敢怎么抢? - V2EX
- WebView高危接口安全检测
- R系列:分词、去停用词、画词云(词云形状可自定义)
- 高斯消元 &; 线性基【学习笔记】
- django-rest-framework之基于类的视图
- 《Serverless架构-无服务单页应用开发》读后感
- html5新特性学习笔记
- 58.纯 CSS 创作一只卡通鹦鹉
- CButtonST|CUniButton等按钮类的使用