来自未知参数的C ++ sprintf

尝试写一个nodejs sprintf本地实现,同时提高我的c + +技能,我研究如何提供未知长度的参数sprintf。 我首先虽然我可以使用vsprintf,但无法find如何填充它。 基本上,nodejs / v8绑定给了我一个参数数组,我可以将其转换为向量或其他东西,但不知道如何将其转换为vsprintf所需的va_list或任何其他可以使其工作的替代方法。

有人可以提出一个策略吗?

d。

通常它是编译器和平台相关的。 您可以查看所选编译器的va_startva_arg等的实现,并使用asm指令以正确的方式将数据推入堆栈。

我不这样做,如果你的实现对模仿参数的sprintf循环是至关重要的,并且一次一个地处理它们连接结果,那将更加健壮和便携。