C语言中简单包装函数的用途

时间:2015-07-14 11:47:32

标签: c wrapper

ex26中学习C的艰难方式'在db.c文件中,Zed定义了两个函数:

static FILE *DB_open(const char *path, const char *mode) {
return fopen(path, mode);
}
static void DB_close(FILE *db) {
fclose(db);
}

我很难理解将这些非常简单的调用包装到fopenfclose的目的/需要。包含非常简单的函数的优点是什么,如上面给出的例子?

3 个答案:

答案 0 :(得分:7)

在这种特殊情况下,包装器用于隐藏DB_openDB_readDB_close全部映射到文件操作的详细信息。

这种方法实现了一个抽象层,通过它可以访问所有与数据库相关的函数。此外,这提供了模块性,稍后可以添加更多方法来打开/读取/关闭数据库。

正如Michael Kohne在评论中所解释的那样,应该改进这个包装器以完全隐藏例如: FILE *db的类型,用struct DB_context *context;代替。

答案 1 :(得分:0)

Wrappers(或 stubs )通常用于保护代码的其他区域免受被包装函数的更改。

它也是与动态库和共享对象交互的有用方式。

答案 2 :(得分:0)

基本上,包装器意味着使用我们的/ a_developer自定义函数隐藏底层例程的所有相关信息。

您已经提到文件名本身就是db.c,所以开发人员可能想要所有的关键&使用/声明的重要功能必须具有 DB _

的开头