蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


函数之间如何传递可变参数?

void a(int i, ...);
void b(int i, ...);

函数b调用了函数a
并且我希望把b的参数都传递给a
这该怎么写呢
我写了一个但是不对
[code]
void a(int i, ...)
{
        va_list args;
        char buf[1000];

        va_start(args, i);
        vsprintf(buf, "%s,%s",args);
        printf("[%s]\n",buf);
        va_end(args);
}
void b(int i, ...)
{
        va_list args;
        va_start(args, i);
        a(i, args);        --->;问题在这里。。。。
        va_end(args);
}
[/code]

函数之间如何传递可变参数?

把函数a改成:
[code]void a(int i, va_list args)
{
       char buf[1000];

       vsprintf(buf, "%s,%s",args);
       printf("[%s]\n",buf);
}
[/code]

函数之间如何传递可变参数?

必须这样吗
这样看起来很丑
没有...好看
是否有别的办法呢

函数之间如何传递可变参数?

怎样判断参数的个数?
如果少一个调用参数:b(123,"123")
vsprintf那句还是会执行,并且会拷贝一些随机字符串
[code]
void a(int i, va_list args)
{
      char buf[1000];
      bzero(buf, sizeof(buf));
      vsprintf(buf, "%s,%s",args);    -->;有问题
      printf("[%s]\n",buf);
}
[/code]

函数之间如何传递可变参数?

va_list是从堆栈里一个一个往下取,不能保证溢出的,只能由程序员自己来控制

函数之间如何传递可变参数?

原来如此
谢谢



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com