大佬教程收集整理的这篇文章主要介绍了每个结构调用使用一次的结构函数指针,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
头@L_197_3@
typedef struct { void (*Start)(void); void (*ByteWritE)(uint8_t *pBuffer); // Modifies I2C buffer uint8_t (*ByteRead)(uint8_t *pBuffer); void (*ArrayWritE)(uint8_t *pBuffer); uint8_t (*ArrayRead)(uint8_t *pBuffer); bool (*Busy)(void); } sI2C_t; extern const sI2C_t I2C0; extern const sI2C_t I2C1; extern const sI2C_t I2C2;
然后在C@L_197_3@中实现每个函数指针以满足结构接口.
C档案
static void I2C0_Start(void) { ... } static void I2C0_ByteWrite(*uint8_t) { ... } static uint8_t I2C0_ByteRead(*uint8_t) { ... } static void I2C0_ArrayWrite(*uint8_t) { ... } static uint8_t I2C_ArrayRead(*uint8_t) { ... } static bool I2C_Busy(void) { ... } const sI2C I2C0 = { I2C0_Start,I2C0_ByteWrite,I2C0_ByteRead,I2C0_ArrayWrite,I2C0_ArrayRead,I2C0_Busy }; // Code-block repeated for I2C1,I2C2,etc. (REDUNDANT!)
这使得访问I2C接口特定功能变得相对容易:
bool status; I2C0.Start(); status = I2C1.busy(); ...
虽然函数指针对于I2C0,I2C1和I2C2等基本相同,但我必须为每个新的结构接口单独写出它们.由于这是多余的,我有没有办法只实现一次这些函数指针?
以上是大佬教程为你收集整理的每个结构调用使用一次的结构函数指针全部内容,希望文章能够帮你解决每个结构调用使用一次的结构函数指针所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。