C中简单包装函数的目的

Purpose of simple wrapper function in C

db.c 文件的 'Learn C the Hard Way' 的 ex26 中,Zed 定义了两个函数:

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

我很难理解 purpose/need 将这些非常简单的调用包装到 fopenfclose。包装非常简单的函数(如上面给出的示例)的优点是什么?

包装器(或存根)通常用于保护代码的其他区域免受被包装函数的更改影响。

这也是与动态库和共享对象进行交互的一种有用方式。

在这种特殊情况下,包装器用于隐藏 DB_openDB_readDB_close 所有映射到文件操作的细节。

这种方法实现了一个抽象层,通过它可以访问所有与数据库相关的功能。这也提供了模块化,以后可能允许向open/read/close数据库添加更多方法。

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

基本上是一个包装器,通过使用our/a_developer的自定义函数隐藏底层例程的所有相关信息。

您已经提到文件名本身是 db.c ,所以开发人员可能想要 used/declared 的所有关键和重要功能必须以 DB_[= 开头15=]