在Win64的sysv abi函数中使用va_start?

时间:2019-06-21 17:02:46

标签: c++ c variadic sysv

我正在尝试实现一个声明为sysv_abi的可变参数函数, 因此我必须在此函数中使用va_start,但没有找到方法。

我使用vs2017在Win64上编译代码,编译器为clang-cl。 目标是x86_64可执行文件(当然是Windows上的PE文件)。

int __attribute__((sysv_abi)) my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...)
{
    va_list arg_list;
    va_start(arg_list, format);
    int ret = vsprintf_s(buffer, sizeOfBuffer, format, arg_list);
    va_end(arg_list);

    //__builtin_va_list v_list;
    //__builtin_va_start(v_list, format);
    //int ret = vsprintf_s(buffer, sizeOfBuffer, format, v_list);
    //__builtin_va_end(v_list);

    return ret;
}

我都不会编译,

error : 'va_start' used in System V ABI function

我该如何处理?

0 个答案:

没有答案