■ va_函数使用 ■ 宏定义可变参数使用 ■ 例子 #include <stdarg.h> #include<iostream> using namespace std; #define D_LEN_TEXTLOG 512 void outputlog(const char *fmt, ...) { char acTextBuf[D_LEN_TEXTLOG] = {0}; int i4Len = 0; va_list valist; va_start(valist, fmt); i4Len = vsnprintf(acTextBuf, D_LEN_TEXTLOG, fmt, valist); va_end(valist); cout << " ========================= " << endl; cout << " len :" << i4Len << endl; cout << " buffer :" << acTextBuf << endl; } void tVarArg(int num,...) { va_list argp; va_start(argp,num); while(--num>=0) printf("%s\n",va_arg(argp,char*)); va_end(argp); return ; } #define LOG_USR_STR(fmt, ...) outputlog(""fmt, ##__VA_ARGS__) #define LOG_MY_USR_STR(fmt, ...) LOG_USR_STR(""fmt, ##__VA_ARGS__) #define LOG_USR_STR_OTHER( ...) outputlog((char*)__VA_ARGS__) int main() { LOG_USR_STR("hello %d, %s", 100, "nihao"); LOG_USR_STR(); LOG_MY_USR_STR("hello %d, %s", 100, "nihao"); LOG_USR_STR_OTHER("hello %d, %s", 100, "nihao"); //LOG_USR_STR_OTHER();//失败 tVarArg(5,"Hello! ","My ","name ","is ","neverTheSame.n"); return 0; }
|
|
来自: renhl252 > 《C Primer》