我正在尝试实现一个声明为 sysv_abi 的可变参数函数,所以我必须在这个函数中使用 va_start,但没有找到方法。
我在Win64上编译代码,使用vs2017,编译器是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
我该如何处理?