我有两个名为uart.h和spi.h 的库
它们都具有名称相同但实现不同的函数。
例如,在uart.h中,我们有带有uart实现的void SetValue()
函数,而在spi.h中我们有相同的函数名称,但带有spi实现。
我想用预处理器指令(#ifdef
#define
…(将这两个库合并为一个库。雇主希望我使用这种方式进行合并。
我们想让main.c文件中的用户确定协议(uart或spi(,并根据main.c文件的用户定义编写库。
如果您有用通用名称定义函数的C++标头,那么它们应该更好地使用名称空间。那么你就有了UART::SetValue()
,没有问题。
接下来的问题是:为什么UART不是一个带有方法的类?UART是一个对象,它在内存中有一个位置(在大多数arch中(,在一个系统中可以有多个UART。UART的SetValue()
需要一个额外的参数吗?你的意思是?
一旦将两个函数分离,就可以将它们合并,并使用#ifdef构造从两个函数中选择一个作为默认函数。