C语言可变参数函数使用总结.docx
- 文档编号:1781281
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:16
- 大小:15.62KB
C语言可变参数函数使用总结.docx
《C语言可变参数函数使用总结.docx》由会员分享,可在线阅读,更多相关《C语言可变参数函数使用总结.docx(16页珍藏版)》请在冰豆网上搜索。
C语言可变参数函数使用总结
C语言可变参数函数使用总结
//ADS1.2下编译使用
voidTestFun(char*fmt,...)
{
intch;
charselch=0;
va_listap=NULL;
va_start(ap,fmt);
do
{
selch=*fmt;
if(selch!
=‘%’)
{
putchar(*fmt);
}
else
{
selch=*++fmt;
switch(selch)
{
case‘c’:
ch=va_arg(ap,int);
printf(%c,ch);
break;
case‘d’:
ch=va_arg(ap,int);
printf(%d,ch);
break;
case‘x’:
ch=va_arg(ap,int);
printf(%#x,ch);
break;
}
}
++fmt;
}while(*fmt!
=‘‘);
va_end(ap);
}
//调用
TestFun((char*)thisis%d,%c,%x,1234,’6’,0x12345);
//WIN-TC编译通过
#include
/************************************************************
typedefvoid*va_list;
#defineva_start(ap,parmN)(ap=...)
#defineva_arg(ap,type)(*((type*)(ap))++)
#defineva_end(ap)
*******************************************************************
*/
voidTestFun(cosntchar*fmt,...)
{
intch;
longi32value=0;
charselch=0;
va_listap=0;
va_start(ap,fmt);
do
{
selch=*fmt;
if(selch!
=‘%’)
{
putch(*fmt);
}
else
{
selch=*++fmt;
switch(selch)
{
case‘c’:
ch=va_arg(ap,int);
printf(%c,ch);
break;
case‘d’:
ch=va_arg(ap,int);
printf(%d,ch);
break;
case‘x’:
ch=va_arg(ap,int);
printf(%#x,ch);
break;
case‘l’:
if(*++fmt==‘d’)
{
i32value=va_arg(ap,long);
printf(%ld,i32value);
}
else
{
putch(‘l’);
if(*fmt!
=0)
{
putch(*fmt);
}
}
break;
default:
break;
}
}
++fmt;
}while(*fmt!
=‘‘);
va_end(ap);
}
voidmain(void)
{
TestFun(thisis%d,%c,%x,%ld,1234,’6’,0x2345,(long)12345678);
getch();
}
voidmain(void)
{
TestFun(thisis%d,%c,%x,%ld,1234,(char)’6’,0x2345,(long)12345678);
getch();
}
上述的example使用宏定义,var_start(ap,
pareN),var_arg(ap,type),var_end(ap).
var_start(ap,pareN)//是ap指向第一个变参.
var_arg(ap,type),//返回变参的实际值.
var_end(ap).//是ap指向空指针.
具体的实现,在不同的编译环境下有所不同.
扩展阅读:
单片机C语言编程心得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 可变 参数 函数 使用 总结