[英]Passing one va_list as a parameter to another
我正在使用 fastcgi 庫創建一個應用程序,他們的打印方法有點冗長。 我試圖用我自己的方法包裝他們的 fprintf 函數:
我想轉
FCGX_FPrintF(out, char* fmt, ...);
進入
寫(字符* 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 網站會發現 fgciapp.h 頭文件中聲明的函數使用了 FCGX 前綴,該前綴又包含:
/*
*----------------------------------------------------------------------
*
* 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);
至此,接口功能就完成了。
我不相信有任何方法可以以獨立於平台的方式做到這一點。 我可能會使用 vsprintf 自己格式化字符串,然后將其發送到打印功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.