我正在重定向客户操作系统'libc sprintf调用的输出,该调用使用2个指针调用,一个用于格式字符串,另一个用于原始数据(实际上是一个可变参数列表)。
要在主机上输出,vsnprintf
当前使用相同的格式字符串调用,并且相同的原始数据指针已转换为预期类型va_list
:
char * format_str = pointer1;
char * arg_list = pointer2;
vsnprintf(buffer, size, format_str, (va_list)arg_list);
这样使用vsnprintf
是否正确或有更好的方法吗?
这是有效的,因为va_list
实际上只是一个原始数据指针(至少在MSVC下),所以它的工作方式与使用va_start
,va_end
等相同。