完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
比如在 STM32f10x_map.h 头文件里,有下面这样宏定义名和指针变量名相同的:
这里是宏定义 #ifdef _PWR #define PWR ((PWR_TypeDef *) PWR_BASE) #endif /*_PWR */ ........ 下面还有一个指针变量 ........ #ifdef _PWR EXT PWR_TypeDef *PWR; #endif /*_PWR */ 按照 #ifdef _PWR 这个条件,这个宏定义名 PWR和下面的指针变量 PWR一样是同时成立的,是不是把上面的宏展开后替换下面的PWR呢? 变成这样吗? EXT PWR_TypeDef *((PWR_TypeDef *) PWR_BASE); 这个组合应该怎么理解呢? |
|
相关推荐
5个回答
|
|
|
还是我理解错了?前面的宏定义是在出现PWR的地方强制把地址PWR_BASE转换成指向结构体PWR_TypeDef的指针;而下面那个指针变量从定义上看也是指向PWR_TypeDef的指针,只是这两个指针的地址不一样?
|
|
|
|
|
|
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。
|
|
|
|
|
|
回复第 3 楼 于2014-07-01 11:31:14发表:
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。 这个EXT是extern的宏定义,表示变量或者函数的定义在别的文件中。但是在这里PWR是在同一个文件中,为何要加extern呢? |
|
|
|
|
|
回复第 3 楼 于2014-07-01 11:31:14发表:
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。 额不好意思,是我粗心看错了,上面还有一个条件判断: #ifndef DEBUG ...... #else /* DEBUG */ .......... 这两段定义是不会同时成立的,这样我能理解了 |
|
|
|
|
|
EXT上面有定义是空,还是extern
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1445 浏览 1 评论
1115 浏览 0 评论
976 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
5355 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
4148 浏览 1 评论
浏览过的版块 |
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 12:42 , Processed in 0.781750 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
13973