在C中返回va_list是否安全?

Hay*_*tuk 16 c c99 variadic-functions c89

我想编写一个返回类型为va_list的函数.

例: va_list MyFunc(va_list args);

这是安全和便携的吗?

Ste*_*sop 7

va_list 可能(但不保证)是数组类型,因此您无法按值传递或返回它.看起来好像的代码,可能只是传递/返回指向第一个元素的指针,因此您可以在被调用者中使用该参数,但您可能会对原始元素执行操作.

在形式上你可能会说这va_list是一个实体类型,而不是一个值类型.您使用va_copy,而不是通过赋值或通过函数参数/返回来复制它.