繁体   English   中英

这个C宏做什么?

[英]What does this C macro do?

您知道这段代码是什么意思吗?

#define StartEsub (unsigned short   (**) (unsigned short \
                                               AnalogConfigReg, \
                                               unsigned short \
                                               AnalogClockMask)) 0x00502501

摆脱混乱的宏,您会得到

(unsigned short (**) (unsigned short AnalogConfigReg, 
                      unsigned short AnalogClockMask)) 0x00502501

从代表地址的整数到指向函数指针的指针的转换。 我不知道指向函数指针的指针对于您的特定情况如何有意义。

更好的方法和更容易阅读的方法是:

typedef unsigned short func_t (unsigned short AnalogConfigReg, 
                               unsigned short AnalogClockMask);

(func_t**) 0x00502501

似乎正在为函数定义硬编码的矢量地址(指向函数指针的指针)。 它特定于您的特定嵌入式目标,因此您可能要添加有关使用此代码的系统的详细信息。

更详细地讲-显然某个地方的函数如下所示:

unsigned short foo (unsigned short AnalogConfigReg,
                    unsigned short AnalogClockMask)

指向该函数的指针存储在地址0x00502501

这种事情有时称为“挂钩”,它可能允许通过修改此挂钩地址来安装用户定义的函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM