在调用vsnprintf时正确使用原始数据指针作为va_list参数?

时间:2018-03-10 04:13:08

标签: c variadic-functions libc

我正在重定向客户操作系统'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_startva_end等相同。

0 个答案:

没有答案