C/C++中的可变参数
所需的函数参数不固定,需要用到带有可变参数的函数,类似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