你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教STM32头文件里宏定义名和变量名是不是重复了?

[复制链接]
liuyagz 提问时间:2014-6-30 22:25 /
比如在 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 发布时间:2014-6-30 22:25

举报

5个回答
liuyagz 回答时间:2014-6-30 22:25:39

RE:请教STM32头文件里宏定义名和变量名是不是重复了?

还是我理解错了?前面的宏定义是在出现PWR的地方强制把地址PWR_BASE转换成指向结构体PWR_TypeDef的指针;而下面那个指针变量从定义上看也是指向PWR_TypeDef的指针,只是这两个指针的地址不一样?
废鱼 回答时间:2014-7-1 11:31:14

RE:请教STM32头文件里宏定义名和变量名是不是重复了?

EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。
liuyagz 回答时间:2014-7-1 23:03:33

回复:请教STM32头文件里宏定义名和变量名是不是重复了?

回复第 3 楼 于2014-07-01 11:31:14发表:
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。 

这个EXT是extern的宏定义,表示变量或者函数的定义在别的文件中。但是在这里PWR是在同一个文件中,为何要加extern呢?
liuyagz 回答时间:2014-7-1 23:45:31

回复:请教STM32头文件里宏定义名和变量名是不是重复了?

回复第 3 楼 于2014-07-01 11:31:14发表:
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。 

额不好意思,是我粗心看错了,上面还有一个条件判断:
#ifndef DEBUG
......
#else   /* DEBUG */
..........
这两段定义是不会同时成立的,这样我能理解了
废鱼 回答时间:2014-7-2 15:17:17

RE:请教STM32头文件里宏定义名和变量名是不是重复了?

EXT上面有定义是空,还是extern

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版