我在使用va_
方法时遇到问题,找不到示例(或未弄清楚关键字是什么)。问题是,我需要对不同的格式使用相同的args,但是编译器给了我:
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
应为自eFormat
变量。此外,将va_list
声明为,xArgs
但您使用xArgs1
会导致语法错误。
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(xArgs, eFormat);
vsnprintf(caString, sizeof(caString), fmt1, xArgs);
va_end(xArgs);
vSaveToDb(caString);
va_start(xArgs2, eFormat);
vsnprintf(caString, sizeof(caString), fmt2, xArgs2);
vPrintFormatted(caString);
va_end(xArgs2);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句