合并两个具有相同名称函数的C++库

问题描述 投票:0回答:1

我有两个名为 uart.h 和 spi.h 的库

两者的功能名称相同,但实现不同。

例如,在 uart.h 中,我们有

void SetValue()
具有 uart 实现的函数,而在 spi.h 中,我们有相同的函数名称,但具有 spi 实现。

我想将这两个库合并到一个带有预处理器指令的库(

#ifdef
#define
...)雇主希望我使用这种方式进行合并。

我们想要求 main.c 文件中的用户确定协议(uart 或 spi),并根据 main.c 文件中的用户定义编写库。

c++ libraries
1个回答
0
投票

如果您有使用通用名称定义函数的 C++ 头文件,那么它们最好使用命名空间。然后你就会

UART::SetValue()
并且没有问题。

接下来的事情是:为什么 UART 不是一个有方法的类? UART 是一个对象,它在内存中拥有一个位置(在大多数架构中),并且系统中可以有多个 UART。 UART 的

SetValue()
需要额外的参数吗?

一旦将两个函数分开,您就可以合并它们并使用 #ifdef 构造选择这两个函数之一作为默认值。

© www.soinside.com 2019 - 2024. All rights reserved.