打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
7.2.7 含有可变形参的参数
■ 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;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Vsprintf简介--附实现源码
【转】Linux内核中的printf实现
C语言可变参数函数的使用及相关函数介绍
随想录(做自己代码的测试工程师)
内核启动用户态的程序 - 但行好事 莫问前程 - JavaEye技术网站
Linux下用C开发PHP扩展[转]
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服