我有一个用C外围设备的硬件抽象层,用C语言编写。应用程序代码通过C ++包装器使用外设。现在我有一个低级枚举ll_enum
和一个函数,需要一个具有此数据类型的参数。
我对良好架构的理解意味着以下几点:
我现在的解决方案:
我在C ++ Wrapper中有一个enum,它与低级枚举有相同的条目。枚举被转换为C ++ Wrapper中的低级类型。
// ### C++ Wrapper ###
enum hl_enum {
foo = 1,
bar = 2,
}
void Peripheral::hl_function(hl_enum param) {
ll_function((ll_enum)param);
}
// ### Low level C-file ###
typedef enum {
foo = 1,
bar = 2,
} ll_enum;
void ll_function(ll_enum param);
显然这是一个糟糕的解决方案,因为你必须在两个位置更改代码并在错过时遇到麻烦。
有更好的解决方案吗?