我正在使用固件,试图制作一个与设备无关的库。该库使用 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/