我正在用C编写一个嵌入式应用程序,使用来自两个不同供应商的SDK。每个SDK都有自己的模块来处理串行(SPI)功能,并且它们相互干扰。我写了自己的SPI模块,并希望使用我的函数。使用C函数式宏作为函数别名
而不是通过更换所有的函数调用来修改SDK,我想使用类似函数的宏来使旧调用映射到新函数。
我的功能镜像他们的,虽然有一个额外的参数来声明我正在与哪个设备交谈。例如:
厂商的SDK函数声明:
NTRXSPIRead(uint8_t address, uint8_t *buffer, uint8_t len);
我的功能:
spiBurstRead(DEVICETYPE, uint8_t address, uint8_t *buffer, uint8_t len);
我提出的解决方案:
#define NTRXSPIRead(add,buff,len) spiBurstRead(DEVICETYPE,(add),(buff),(len))
这项工作应该如何?有没有更好的方法来做到这一点?
它应该工作吗? IDK,_TRY IT!_ – ApproachingDarknessFish
这可能不工作的一个原因是,如果代码传递函数指针到供应商的SDK函数,因为A)预处理器将无法替换那些实例(它们不像宏调用),B)你已经改变了功能类型。 –
@ValekHalfHeart哈!毫无疑问:)代码准备开始调试前几天,我想知道是否有更好的方法可以遵循。 – bitsmack