我需要通过va_list进行两次(或更多次)传递.我有一个大小的缓冲区,我想用sprintf写一个格式化的字符串.如果格式化的字符串不适合分配的空间,我想要将分配的空间加倍并重复直到它适合.
(作为旁注,我希望能够首先计算格式化字符串的长度并分配足够的空间,但我发现可以做到的唯一功能是_snprintf,并且在VS2005中不推荐使用…)
现在,到目前为止没有问题:我使用vsnprintf并在每次调用之前调用va_start.
但我还创建了一个函数,它将va_list作为参数,而不是“…”.然后我再也不能使用va_start了!我读过有关va_copy的内容,但VS2005不支持.
那么,你会怎么做?