|
蓝森林 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是从堆栈里一个一个往下取,不能保证溢出的,只能由程序员自己来控制 |
函数之间如何传递可变参数?
原来如此
谢谢 |
| |