printf(const char* fmt, ...)
最近在STC8051U中移植了一个ST7735屏幕驱动,但是有一个函数一直报错void ST7735_printf(const char* fmt, ...)
{
int buff_size = 0;
char* buf = NULL;
va_list args;
va_start(args, fmt);
buff_size = vsnprintf(NULL, 0, fmt, args) + 1; // 计算需要的缓冲区大小
buf = (char*) malloc(buff_size * sizeof(char)); // 分配缓冲区
vsprintf(buf, fmt, args); // 将格式化的字符串写入缓冲区
ST7735_WriteString(DEF_X,DEF_Y,buf,Font_16x26,FCOLOR,BCOLOR);
va_end(args);
free(buf);
}报错如下:
有大佬遇到过吗?
头文件该进入的都引入了 #include "ST7735.h"
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include "font.h"
#include <stdio.h>
#include "delay.h"
单独编译这个文件,0error 0 waring
编译器没有找到vsnprintf的定义
stdio.h中只有vsprintf没有vsnprintf
vsnprintf没有定义。文件里面找找有没有。 vsnprintf 应该是stdio.h标准库里面的东西 micro lib 使用了吗 嵌入式之路 发表于 2024-8-21 12:25
micro lib 使用了吗
C251貌似没有这个选项
如果没有vsnprintf这个函数的话,直接固定大小缓冲区大小也是一个办法
buff_size = 20; // 设定缓冲区大小20
这个应该是工程没配好。
页:
[1]