gpt4 book ai didi

c++ - 将一个 va_list 作为参数传递给另一个

转载 作者:可可西里 更新时间:2023-11-01 17:30:16 30 4
gpt4 key购买 nike

我正在使用 fastcgi 库创建一个应用程序,它们的打印方法有点冗长。我试图用我自己的方法包装他们的 fprintf 函数:

我想转

FCGX_FPrintF(out, char* fmt, ...);

进入

write(char* strFormat, ...);

我发现了 va_list 的魔力,但找不到将 va_list 值传递到其 fprintf 函数的简单方法。有没有办法做到这一点?我知道 vsprintf 和 vprintf 存在,所以它一定比我想象的要难。

如果一切都失败了,我将重载一个写入函数

最佳答案

您必须在 Fast CGI 库中找到 vfprintf() 的类似物。至少有一定的可信度。实现 FCGX_FPrintF() 的简单方法是:

void FCGX_FPrintF(FILE *out, char *fmt, ...)
{
va_list args;
va_start(args, fmt);
FCGX_VFPrintF(out, fmt, args);
va_end(args);
}

所以这个函数存在的可能性很大;你需要检查它是否被正式暴露。


快速访问 Fast CGI web site显示 FCGX 前缀由 fgciapp.h header 中声明的函数使用,并且依次包含:

/*
*----------------------------------------------------------------------
*
* FCGX_FPrintF, FCGX_VFPrintF --
*
* Performs printf-style output formatting and writes the results
* to the output stream.
*
* Results:
* number of bytes written for normal return,
* EOF (-1) if an error occurred.
*
*----------------------------------------------------------------------
*/
DLLAPI int FCGX_FPrintF(FCGX_Stream *stream, const char *format, ...);

DLLAPI int FCGX_VFPrintF(FCGX_Stream *stream, const char *format, va_list arg);

至此,接口(interface)完成的函数就完成了。

关于c++ - 将一个 va_list 作为参数传递给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1548947/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com