首页 > 其他分享 >print()问题/printf重定义

print()问题/printf重定义

时间:2023-12-04 09:44:39浏览次数:28  
标签:__ va 定义 ap ret uprtf bufsz printf print

 Debug点击三次run才能运行,直接烧录后无法运行/重上电也不行

纯C可以勾选“Use MicroLIB”

C/C++混合,勾选“Use MicroLIB”会报错,需换如下方式:


#define unprintf(...) utnprintf(&huart1, __VA_ARGS__)
#define uprintf(...) utnprintf(&huart1, 1024, __VA_ARGS__)

inline int utnprintf(UART_HandleTypeDef *huart, int bufsz, const char *__restrict format, ...)
{
  if(bufsz<0 || bufsz>65536){return -1;}
  int ret;
  va_list ap_uprtf;
  va_start(ap_uprtf, format);
  if(bufsz == 0){
    ret = vsnprintf(NULL, 0, format, ap_uprtf);
    va_end(ap_uprtf);
    return ret;
  }
  char buffer[bufsz];
  ret = vsnprintf(buffer, bufsz, format, ap_uprtf);
  va_end(ap_uprtf);
  if(ret > 0){
    if(ret < bufsz){bufsz = ret;}
    else{--bufsz;}
    MyPrintf(buffer, bufsz);  //输出
  }
  return ret;
}

 

标签:__,va,定义,ap,ret,uprtf,bufsz,printf,print
From: https://www.cnblogs.com/boring-luobo/p/17874249.html

相关文章

  • Python 的 tqdm 如果在内部使用print打印 会重复打印进度条 怎么避免这个问题?
    要避免在使用Python的tqdm库时在内部使用print打印时重复打印进度条,您可以通过使用tqdm库提供的特殊函数tqdm.write()来实现。tqdm.write()函数会将输出写入到标准输出,而不会干扰进度条的显示。下面是一个示例:fromtqdmimporttqdmimporttime#创建一个范围为10的进度条fori......
  • Spring实践之自定义命名空间并解析
    自定义一个命名空间1、新建一个空项目,在resources/META-INF目录下新建一个spring.handlers文件,内容如下:http\://open.harvey.com/schema/dog=com.harvey.open.annotation.spring.DogNamespaceHandler文件内容为一个键值对。key为自定义命名空间:http://open.harvey.com/sc......
  • 用黑科技重新定义“豪华” 智界S7指明产业新方向
    如果说有台车,价格跟特斯拉Model3差不多,但却能让你体验到比肩ModelS或者保时捷Taycan4S的豪华质感与极致性能,你会不会买?你可能会认为,就算是在汽车市场已经“卷”到不行的2023年,这样的事也是不可能发生的。然而,它真的来了。11月28日下午,在“智界S7及华为全场景发布会”上,华为正式......
  • 自定义精美商品分类列表组件 侧边栏商品分类组件 category组件(适配vue3)
    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率......
  • 【C语言】自定义类型:联合和枚举
    1、联合体1.1、联合体类型的声明像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共用体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。#inclu......
  • 【C语言】自定义类型:结构体
    1、结构体类型的声明1.1、结构体的概念结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2、结构的声明structtag{member-list;}variable-list;在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。以下为实例://此声明......
  • streamlit 展示自定义 html 以及 css
    目前探索出来的有效方法:style="""<style>.memo-box{border:1pxsolid#ccc;padding:10px;margin-bottom:20px;}.tag{font-size:12px;color:#88......
  • 初中生就能看懂的Python教程 - 1. hello world、print与对象类型
    上一篇教程我们讲了如何安装Python。可以开始编程了。这一篇文章讲解有关print与变量的内容。不过我没讲怎么使用IDLE。在这里补充一下。PythonIDLE的使用下载完Python之后我们应该可以在开始菜单找到一个程序叫做IDLE,这也是新手最常用的Python编辑器,Python自带的。打开IDLE......
  • Java开发者的Python快速进修指南:自定义模块及常用模块
    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释器来扫描和处理。另......
  • Spring是如何解析自定义的xml标签
    SpringSPISpring借鉴了JavaSPI思想来解析各种标签,我们称之为SpringSPI。SpringSPI沿用了JavaSPI的设计思想,但在实现上和JavaSPI及DubboSPI也存在差异,Spring通过spring.handlers和spring.factories两种方式实现SPI机制,可以在不修改Spring源码的前提下,做到对Spring框架的扩......