1

私は MySQL データベースを含むアプリケーションを作成しています。データベース関連のすべての操作を 1 つ (または将来的には複数) の特定のファイルに格納したいと考えています。DB モジュールのサービスを使用できるように、データベース接続 ID を他のモジュールにエクスポートする必要があります。

理想的には、これです。(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 に答える