1

我正在编写一个涉及 MySQL 数据库的应用程序,并且我希望将所有与数据库相关的操作放在一个(或多个,在未来)特定文件中。我需要将数据库连接 ID 导出到其他模块,以便它们可以使用 DB 模块的服务。

理想情况下,这将是。(在 db.h 中)

typedef ????? dbconn_t

在其他文件中

dbconn_t = db_newconnection(...);

用于 db 连接的 MySQL 类型称为 MYSQL,所以我倾向于写

typedef MYSQL *dbconn;

但要做到这一点,我需要在我自己的 db.h 中包含 mysql.h,将大量函数和其他类型导出到项目的其余部分。

想到了一些解决方案:

  • 导出一个 int 类型并保留一个用于将 int 映射到 MYSQL 指针的表

  • 在数据库处理代码中的每个调用中导出一个 void 指针和类型转换

两者看起来都很糟糕。有什么想法可以帮助解决这个问题吗?

4

1 回答 1

2

您可以将数据 ID 封装到结构类型中。

例如,在您的私人标头中,您可能会有类似

struct dbconn {
     int id;
};

在标题中,您将其导出为

struct dbconn;
typedef struct dbconn *dbconn_t;
于 2013-09-25T04:56:05.113 回答