guye 发表于 2009-1-8 17:44:08

如何让有可变参数的函数调用另外一个可变参数函数?【恢复】

比如:

oldPrintf (int a, int b, char * fmt, ...)

{

/* do something...*/

}



newPrintf (char * fmt, ...)

{

    va_list param;

    oldPrintf (10,100, fmt,param); 

}

此时编译可以通过但是结果是错的,大侠们有什么办法没?

guye 发表于 2009-1-12 22:49:29

被调用的带参数函数将运行结果用return返回结果给调用的函数,或者直接使用全局变量。 

不理解!



newPrintf (char * fmt, ...)  

{  

    va_list param;  

    va_start(param,fmt); 

    oldPrintf (10,100, fmt,param);   

    va_end(param); 

}  

实验了一下,不行!编译没有问题,但是运行结果是错误的。我用下面的程序试的:

#include "stdafx.h"

#include <stdarg.h>

void newPrintf (const char * fmt, ...)

{

    va_list param;  

    va_start(param,fmt); 

    printf(fmt,param);   

    va_end(param); 

}

int main(int argc, char* argv[])

{

        newPrintf("Hello %d\n",2009);

        return 0;

}



结果为:

Hello 1244976

tfavr2008 发表于 2009-1-8 19:00:34

newPrintf (char * fmt, ...) 

{ 

    va_list param; 

    va_start(param,fmt);

    oldPrintf (10,100, fmt,param);  

    va_end(param);

} 

117433525 发表于 2009-1-8 17:46:56

被调用的带参数函数将运行结果用return返回结果给调用的函数,或者直接使用全局变量。
页: [1]
查看完整版本: 如何让有可变参数的函数调用另外一个可变参数函数?【恢复】