Использовать va_start в функции sysv abi на Win64? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь реализовать функцию переменной, объявленную как sysv_abi, поэтому я должен использовать va_start в этой функции, но не нашел пути.

Я компилирую код на Win64, используя vs2017, компилятор clang-cl. Цель - исполняемый файл x86_64 (конечно, PE-файл в Windows).

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

Как с этим справиться?

...