c语言中的可变参数

来源:百度知道 编辑:UC知道 时间:2024/05/18 09:22:26
void write_log(FILE **fp, const char *format, ...)
{
va_list arg;
va_start(arg, format);

if(*fp == NULL)
{
return;
}
if(format == NULL)
{
return;
}

fprintf(*fp, "CLOCK %10d:", get_time()-starttime);
vfprintf(*fp, format, arg);
va_end(arg);
fflush(*fp);
}
这是一个带可变参数的函数,现在我想在另一个函数中引用它,用:
void log_info(HTL *htl, char *format, ...)
{
write_log(2, htl, format, ...);
}
可以么?如果不可以,应该怎样使用呢?谢谢!
我想问的是对于这种带有省略号的可变参数的函数:write_log(2, htl, format, ...);
可不可以这样直接调用?

这个问题可以这样考虑:

你在write_log()函数里调用了vfprintf()函数,其实这个vfprintf()就是一个可以接受你从上层函数传下来的可变参数串的函数。

你现在要在 log_info() 函数下调用 write_log() 函数,并想把可变参数串传给它,你只要参考 vfprintf() 的函数定义来定义 write_log() 函数就可以。

C语言中 vfprintf() 函数的定义是:
int vfprintf(FILE *stream, const char *format, va_list ap);

不知你是否能受到启发。

函数里面调用函数是可以的。
因为你的主方法提供函数接口的同时,它自身也是一个函数。
主方法要提供函数接口,就必须调用其他函数来实现
不知道你写这段代码上去,是不是就是要问这个问题。以前我也遇到这个问题,不过只是想问问在函数内能不能调用函数。