c++ - 在结构中指定设备特定功能

标签 c++ c struct embedded typedef

我正在使用固件,试图制作一个与设备无关的库。该库使用 I2C 进行通信,对于那些不知道它是什么的人来说,这是一种简单而通用的协议(protocol)。 I2C 使用我关心的两个函数,读和写。在不同的微 Controller 上使用 I2C,这主要对每个内核都是不同的,我正在寻找一种方法让库传递函数,以便它可以在一致的方式。

我如何制作一个用户可以将变量设置为函数的结构。 像这样的东西:

typedef struct I2C_setup{
    function read = device specific read function;
    function write = device specific write function;
} 

然后我可以打电话

I2C_setup I2C;

之后

(return type) RegisterRead = I2C.read(register address);

我会使用函数指针还是...什么?

最佳答案

函数指针是个好主意。您可以将原型(prototype)定义为

typedef struct I2C_setup{
  (*I2C_Read_Func)(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);
}

你的实际功能是

I2C_Read(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);

你可以通过

分配它
I2C_setup I2C;
I2C.I2C_Read_Func = I2C_Read;

关于c++ - 在结构中指定设备特定功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332445/

相关文章:

c# - 将 Ptr 编码到结构的访问冲突

c++ - 如何从 Q(double)spinbox 捕获信号

c - 结构 C 中的双重取消引用

c++ - 优化期间对有符号和无符号整数进行别名

将有符号整数数组转换为字符数组

c++ - C/C++ 编译器中的内存泄漏检测

c - 可能是指针问题,但不确定原因

c - 使用 AES 加密文件

C++ 包含问题

c++ - C POSIX 函数的 header