C/C++中的可变参数

  

所需的函数参数不固定,需要用到带有可变参数的函数,类似printf();项目中需要打印信息等也会用到带可变参数的函数。

  •   C语言标准库的头文件 #include<stdarg.h>包含一组能够遍历可变长参数列表的宏,如下:
C/C++中的可变参数

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

使用:

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

 

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

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

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C/C++中的可变参数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/330675

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午5:41
下一篇 2023年3月1日 下午5:41

相关推荐