首页 > 编程语言 > 详细

C/C++中的可变参数

时间:2020-02-20 12:56:05      阅读:58      评论:0      收藏:0      [点我收藏+]

  

所需的函数参数不固定,需要用到带有可变参数的函数,类似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);
View Code

 打印信息参考如下:

 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;
17 
18     fLog.close();
21 }

使用:

const char* chLog = "WH WIN";
addLog(
"%s!", chLog);

 

 参考:https://www.cnblogs.com/zhaobinyouth/p/8781915.html

C/C++中的可变参数

原文:https://www.cnblogs.com/Zoya-/p/12334278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!