关于可变参数表的直接传递

tyeken8 2008-04-27 07:01:12
比如
void holler (char* str,..)中
我想直接调用printf(str,..)(也就是说直接传递这个参数表去下一个函数,请问如何实现,非要用va_arg一个一个倒么?
请高手解答。
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyeken8 2008-04-27
  • 打赏
  • 举报
回复
谢谢楼上的
hastings 2008-04-27
  • 打赏
  • 举报
回复

void holler(const char* szFormat,...)
{
va_list pArgList;
va_start (pArgList, szFormat);
vprintf (szFormat,pArgList);
va_end (pArgList) ;
}
int main()
{
holler("%d %s\n",2008,"2008");
return 0;
}
tyeken8 2008-04-27
  • 打赏
  • 举报
回复
这个难道是C89的?居然可以这么写?

void holler (str, p1, p2, p3, p4, p5, p6)
char * str;
char * p1, * p2, * p3, * p4, * p5, * p6;
{
if (o_verbose) {
fprintf (stderr, str, p1, p2, p3, p4, p5, p6);
if (h_errno)
fprintf (stderr, ": %s\n",winsockstr(h_errno));
else
fprintf (stderr, "\n");
fflush (stderr);
}
}

然后在后面调用holler ("Warning: inverse host lookup failed for %s: h_errno %d",poop->addrs[x], h_errno);
有哪位告诉我怎么做到的?
tyeken8 2008-04-27
  • 打赏
  • 举报
回复
不是,我的意思是:holler的定义不能改变
  • 打赏
  • 举报
回复
同一个类型的话,数组不错
不同类型的话还是变长参数吧
HelloDan 2008-04-27
  • 打赏
  • 举报
回复
用这个也可以,你也可以用数组传进去啊。方法可以外加一个表示数组多大的数,或者可以设置特殊的标记,如指针为NULL时为最后一个。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧