VSCode,C\C++,Mingw,头文件包含cstdarg以及cstdio的情况下,使用va_list、va_start、va_end没有问题,但使用vasprintf函数报错:未定义标识符
解决方法:将vasprintf改成__mingw_vasprintf函数使用,参数不变
va_list ap;
va_start(ap,fmt);
char *res;
//int ret = vasprintf(&res,fmt.c_str(),ap);
int ret = __mingw_vasprintf(&res,fmt.c_str(),ap);
if(ret == -1) {
std::cout << "vasprintf failed\n";
return;
}
va_end(ap);
free(res);
vasprintf是一个可变参数函数,通过可变参数创建一个格式化的字符串,并将其存储在动态分配的内存中。
它的参数包括指向字符串指针的指针,格式化字符串fmt,可变参数列表ap。
函数返回值为字符串长度,如果失败返回-1.
//函数原型
#include <stdarg.h>
#include <stdio.h>
int vasprintf(char **str, const char *format, va_list ap);