我遇到了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 –