宏定义函数
最近在研究ARM,看到这样的代码:#if defined(TARGET_IS_BLIZZARD_RA1) || \
defined(TARGET_IS_BLIZZARD_RA3) || \
defined(TARGET_IS_BLIZZARD_RB1)
#define ROM_UARTIntStatus \
((uint32_t (*)(uint32_t ui32Base, \
bool bMasked))ROM_UARTTABLE)
#endif
#define ROM_UARTTABLE ((uint32_t *)(ROM_APITABLE))
#define ROM_APITABLE ((uint32_t *)0x01000010)
很多函数都是这样定义的,哪位高手能够指点一下迷津?
先谢啦! mark 看到指针就心烦 我来解释下,首先要满足第一个宏的三个条件中的一个,那么就顶一个宏,这个代表后面数组里一个元素,这个元素是一个函数指针,并且被强制转成了前面写的哪个函数指正的形式。。。 qufuta 发表于 2013-11-12 18:48 static/image/common/back.gif
我来解释下,首先要满足第一个宏的三个条件中的一个,那么就顶一个宏,这个代表后面数组里一个元素,这个元 ...
最近看的一些代码总是指针指来指去,能再详细点不,谢谢! NewKing 发表于 2013-11-12 20:30 static/image/common/back.gif
最近看的一些代码总是指针指来指去,能再详细点不,谢谢!
#if defined(TARGET_IS_BLIZZARD_RA1) || \
defined(TARGET_IS_BLIZZARD_RA3) || \
defined(TARGET_IS_BLIZZARD_RB1)
#define ROM_UARTIntStatus \
((uint32_t (*)(uint32_t ui32Base, \
bool bMasked))ROM_UARTTABLE)
#endif
#define ROM_UARTTABLE ((uint32_t *)(ROM_APITABLE))
#define ROM_APITABLE ((uint32_t *)0x01000010)
你最不明白我想是这句:
#define ROM_UARTIntStatus \
((uint32_t (*)(uint32_t ui32Base, \
bool bMasked))ROM_UARTTABLE)
其实这句话我们可以从右边到左边依次看,首先ROM_UARTTABLE这个代表一个数组的元素,具体什么元素,我不知道,因为你没贴出来,但是前面:((uint32_t (*)(uint32_t ui32Base,bool bMasked))这个就能够知道这个数组当中存放的一定是函数指针,所以这句话的意思就是把ROM_UARTTABLE这个元素强制转换成:((uint32_t (*)(uint32_t ui32Base,bool bMasked))这种类型的,然后用ROM_UARTIntStatus这个宏来替换,这些明白了吗??? qufuta 发表于 2013-11-13 12:19 static/image/common/back.gif
#if defined(TARGET_IS_BLIZZARD_RA1) || \
defined(TARGE ...
谢谢指点,长进了,多谢!!!
页:
[1]