【发布时间】:2021-11-11 14:30:18
【问题描述】:
我想问一下,这是否是我的驱动程序包装器封装的有效方法,或者是否有更好的方法。我的目标是隐藏底层驱动的句柄,所以头部不包含驱动库。
//wrapper_foo.h
typedef struct WrapperCtrl WrapperCtrl;
typedef WrapperCtrl *WrapperHandle;
WrapperHandle wrapper_open_device();
//wrapper_foo.c
#include "wrapper_foo.h"
#include "driver.h"
#include <stdint.h>
struct WrapperCtrl {
uint8_t wrapper_specific_parameter;
driver_handle handle;
};
static WrapperCtrl wrapper_cfg;
WrapperHandle wrapper_open_device() {
WrapperHandle w_handle = &wrapper_cfg;
w_handle->handle = driver_open_device();
if (w_handle->handle == NULL) {
return NULL;
} else {
return w_handle;
}
}
感谢您的帮助和建议!
【问题讨论】:
-
查看How to do private encapsulation in C? 与您所拥有的非常相似,只是减去了 typedef 指针和静态文件范围变量。