读书人

请教:怎么将可变参数的函数的参数传递

发布时间: 2012-03-13 11:21:11 作者: rapoo

请问:如何将可变参数的函数的参数传递给另一个可变参数的函数
举个简单的例子:

C/C++ code
/*模仿java中的System.out.println()*/void println(const char* format,...){        printf(format,...);    /*不过这样的不对的。应该如何写呢?望高手指点*/        printf("\n");}



[解决办法]
问题:可变长参数的传递
  有时候,需要编写一个函数,将它的可变长参数直接传递给另外的函数,请问,这个要求能否实现?

  答案与分析:

  目前,你尚无办法直接做到这一点,但是我们可以迂回前进,首先,我们定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递了。看如下所示:


void subfunc (char *fmt, va_list argp)
{
...
arg = va_arg (fmt, argp); /* 从argp中逐一取出所要的参数 */
...
}

void mainfunc (char *fmt, ...)
{
va_list argp;
va_start (argp, fmt); /* 将可变长参数转换为va_list */
subfunc (fmt, argp); /* 将va_list传递给子函数 */
va_end (argp);
...
}

http://www.fortime.net/html/c/20061219/2229.html

读书人网 >C语言

热点推荐