比如在 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); 这个组合应该怎么理解呢? |
RE:请教STM32头文件里宏定义名和变量名是不是重复了?
RE:请教STM32头文件里宏定义名和变量名是不是重复了?
回复:请教STM32头文件里宏定义名和变量名是不是重复了?
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。
这个EXT是extern的宏定义,表示变量或者函数的定义在别的文件中。但是在这里PWR是在同一个文件中,为何要加extern呢?
回复:请教STM32头文件里宏定义名和变量名是不是重复了?
EXT 请看一下这个的定义,这里是如果没有定义PWR,定义PWR,如果定义了。就EXT声明一下。
额不好意思,是我粗心看错了,上面还有一个条件判断:
#ifndef DEBUG
......
#else /* DEBUG */
..........
这两段定义是不会同时成立的,这样我能理解了
RE:请教STM32头文件里宏定义名和变量名是不是重复了?