前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式c编程的一点小记录——宏

嵌入式c编程的一点小记录——宏

作者头像
用户4645519
发布2022-05-09 20:14:08
4750
发布2022-05-09 20:14:08
举报
文章被收录于专栏:嵌入式学习嵌入式学习

近期都在忙着项目开发,因此博客更新就比较佛系了,当然期间也看了不少博主的文章,学到了很多技巧,本文大致罗列下。顺便理一下自己的思路,有输入也要有输出嘛。

网上很多文章都说,enum枚举比宏要好,优点的确也是有的,序号自动递增,更加模块化, 更加好管理。

其实宏也是有比较好的功能的,只是通常,我们都不会使用高级的用法,反正网络上也是普通的用法,很少有高级用法(有当然有的,需要自己好好耐心找)。

1、通常来讲,宏就是在预编译的用于替换的,因此,如果宏里面有enum,那么预编译是不会成功的。gcc,tcc等编译器可以使用-E选项。可以输出.i 文件,查看预编译的输出文件。可以验证自己宏定义、宏展开是否正确。keil 或者iar等嵌入式开发工具(我主要是使用者两个工具,其他免费的比如segger es,stmcubeide等肯定也可以配置输出的),就是勾勾选选的事情,就可以输出预编译文件了。这就是ide流程好入门的原因啊,把很多工作都做了。另外,vscode是个好工具,集成了C/C++的插件鼠标点击到代码上就可以宏展开,微软的工具还是说不错的,毕竟“宇宙第一ide”是来自微软的vs。

2、x macro这个技巧已经存在很多年了。上时间,c语言还未诞生就存在于其他编程语言中了。但是c语言也是有的,应该说是将这个特性引用了。不过中文搜索比较难搜索到,比较好的是我收藏的:https://blog.csdn.net/lianyunyouyou/article/details/108562912博客文章。另外就是英文网址搜索了,bing,google等等我的博客中之前也是收集过的。x macro好像还没有中文名称,又有点也有缺点,其中缺点就是不宜看懂,功力差点的,估计看不懂,需要多看几遍就看懂了。也难过国内开发或者网站搜索都相对比较很少见了。这个技巧也是可学可不学,普通的开发,不用该功能也能对付的。了解了可以多条开发的路。 https://blog.csdn.net/liming0931/article/details/109702175https://blog.csdn.net/liming0931/article/details/110393297

3、c99中添加了很多新的特性,gnu c的语法就添加了更多扩展了,很多语法都是c标准中没有的。其中宏定义添加了可变参数的功能,__VA_ARGS__,网上直接搜索“”可变参数宏“”,中文英文都很多的,所以这个功能国内开发人员是用的很多的。这里就不展开了。

4、网上有个库比较牛逼,叫plooc,github有镜像的,里面的宏定义简直用的是炉火纯青的地步,还有一个叫掩码结构体的使用,基本上实现了面向对象的功能,提高了模块化编程的层次。这个作者也是arm公司的开发人员,超级牛逼的,也是他的文章,把宏“”正名“”了。期初我也以为宏定义没啥大的功能。网站搜索“傻孩子”,微信公众号“裸机思维”。

5、gnu的the c preprocessor的在线文档,讲述了很多宏的使用方法,以及如何是避免采坑的tips。大家可以去看看。是比较权威的文档了。https://gcc.gnu.org/onlinedocs/gcc-10.2.0/cpp/https://gcc.gnu.org/onlinedocs/

6、宏定义可以定义函数宏,通常情况下,也就是宏的一行不要太多代码即可,目前c99字符数量不要超过4096就可以,可以提高编程效率,维护代码更加方便快捷。都知道c++是有模板的,那么c语言的宏可以模仿c++的模板,至少是简易版本的模板,提高了开发的效率。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档