将许多C调用函数封装到单个实现中

Wrap many C calling functions to single implementation

本文关键字:单个 实现 封装 函数 许多 调用      更新时间:2023-10-16

``我有一个要求,即函数调用将有不同的名称,但在执行时所有名称都应该引用相同的定义。例如我有一个类似的函数调用

UINT8 vsignal;UINT8 vsignal1;void Read_Message1_Signal1(&vSignal);void Read_Message2_Signal2(&vSignal1);

但这应该与联系起来

void Read_Message_Signal(UINT8 *signal){}

其已经被实现和编译为dll并且应该被链接到不同的调用,因为这些调用可以基于输入而变化。

有人能帮我如何达到这个要求吗?

是否有什么原因不能只编写自己的包装器?

void Read_Message1_Signal1(&vSignal)
{
    Read_Message_Signal(vSignal);
}
void Read_Message2_Signal2(&vSignal)
{
    Read_Message_Signal(vSignal);
}

如果有很多,你可以用宏自动生成它们。

void Read_Message1_Signal1(&vSignal)
{
    Read_Message_Signal(&vSignal);  // or whatever
}

并对其他函数名重复此操作,也许可以使用自定义代码生成器。

您可以使用预处理器:

#define Read_Message1_Signal1(x) Read_Message_Signal(x)
#define Read_Message2_Signal2(x) Read_Message_Signal(x)

或者重新思考您的API,因为这对我来说似乎很奇怪…