完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于ARM的两个函数,用C写的,有几个问题
先看没有优化的版本,使用了位段 void dostageA(void) void dostageB(void) void dostageC(void) typedef struct{ unsigned int stageA:1; unsigned int stageB:1; unsigned int stageC:1; }Stages_v1; void dostages_v1(Stages_v1 *stages) {if(stages->stageA) {dostageA();} if(stages->stageB) {dostageB();} if(stages->stageC) {dostageC();} } 下面是优化过得版本,有两个问题: 1:Stages_v2为什么要定义为无符号长整型?定义为无符号整型或者字符型可不可以? 2:宏定义中lul<<1是什么意思,在函数里是怎么用到的? typedef unsigned long Stages_v2 #define STAGEA (lul<<0) #define STAGEB (lul<<1) #define STAGEC (lul<<2) void dostages_v2(Stages_v2 *stages_v2) { Stages_v2 stages= *stages_v2; if(stages&STAGEA) {dostageA(); } if(stages&STAGB) {dostageB(); } if(stages&STAGEC) {dostageC(); } |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
819 浏览 0 评论
5599 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2734 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
3074 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
32738 浏览 11 评论
73373 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 15:52 , Processed in 0.591439 second(s), Total 33, Slave 26 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号