我遇到了va_
方法的問題,我找不到一個示例(或者沒有弄清楚關鍵字是什麼)。問題是,我需要使用不同的格式相同ARGS,但編譯器給我:c可變參數函數,相同的參數,不同的格式
的va_start的不正確使用
錯誤。我想要的代碼是這樣的:
void vSaveNecessaryFields(EnumA eFormat, ...)
{
va_list xArgs, xArgs2;
const char *fmt1 = NULL, *fmt2 = NULL;
char caString[100] = {0};
fmt1 = cpGetDbFormat(eFormat);
fmt2 = cpGetPrinterFormat(eFormat);
va_start(xArgs1, fmt1);
va_copy(xArgs2, xArgs1);
vsnprintf(caString, sizeof(caString), fmt1, xArgs1);
vSaveToDb(caString);
va_start(xArgs2, fmt2);
vsnprintf(caString, sizeof(caString), fmt2, xArgs2);
vPrintFormatted(caString);
va_end(xArgs2);
va_end(xArgs1);
}
我該如何解決這個問題?
'的va_start(xArgs1,FMT1)' - >'的va_start(xArgs1,eFormat)' – LPs
現在嘗試它。誰低估了這個,爲什麼? –
它的工作。把它寫成答案,我會接受它。如果我va_end xArgs1 –