博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 - 可变参数再stm32中的应用
阅读量:5236 次
发布时间:2019-06-14

本文共 1132 字,大约阅读时间需要 3 分钟。

参考

void func(const char* str,...){    ...}

func的最后一个参数写成 ... ,表示可变参数, C语言的printf就是类似这种声明.

为了使用可变参数,需要包含头文件 stdarg.h.

使用步骤

  • 定义一个函数,最后一个参数为省略号,省略号前面可以设置自定义参数。
  • 在函数定义中创建一个 va_list 类型变量,该类型是在 stdarg.h 头文件中定义的。
  • 使用 int 参数和 va_start 宏来初始化 va_list 变量为一个参数列表,va_start需要传递两个参数,一个是va_list变量,另一个使用可变参数的函数中的可变参数之前的一个参数,比如要在func中,应该这样写,va_list args; va_start(args,str);。宏 va_start 是在 stdarg.h 头文件中定义的。
  • 使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项。
  • 使用宏 va_end 来清理赋予 va_list 变量的内存。

实例

Stm32F4中实现类似printf输出的LCD显示函数.

需要头文件:
stdarg.h (va_list va_start va_end)
stdio.h (vsprintf malloc)
string.h (strlen)

注意需要即时释放内存!!!

void LCD_ShowStringx(uint16_t x,uint16_t y,uint16_t color,const char*str,...){    uint16_t str_len = strlen(str);    char* strFormatted = malloc(str_len*sizeof(char));    va_list args;   //存放可变参数的数据结构    va_start(args,str); //初始化可变参数,需要传一个va_list类型变量,和可变参数之前的参数,这里是str        vsprintf(strFormatted,str,args);    LCD_ShowString(x,y,(u8*)strFormatted,color); //此函数再头文件 stdio中        free(strFormatted);    va_end(args);}

调用

float value = 0;LCD_ShowStringx(30,50,POINT_COLOR,"value=%.2f",value);

转载于:https://www.cnblogs.com/Laggage/p/11254050.html

你可能感兴趣的文章
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>