Я пишу програму, що включає MySQLбази даних, і я хочу мати всі операції, пов'язані з базою даних, в одному (або більше, в майбутньому) певних файлах. Мені потрібно експортувати ідентифікатор з'єднання з базою даних в інші модулі, щоб вони могли використовувати служби модуля БД.
В ідеалі це було б. (у db.h)
typedef ????? dbconn_t
в інших файлах
dbconn_t = db_newconnection(...);
Тип MySQL для підключень db називається MYSQL, тому я був схильний писати
typedef MYSQL *dbconn;
Але щоб зробити це, мені потрібно включити mysql.h у свій власний db.h, експортуючи тонни функцій та інші типи до решти проекту.
Деякі рішення приходять на думку:
Експортуйте тип int та зберігайте таблицю для відображення ints до покажчиків MYSQL
Експортуйте покажчик void і тип cast у кожному виклику в коді обробки даних бази даних
Обидва здаються досить погані. Будь-які ідеї, щоб допомогти цьому?
Відповіді:
2 для відповіді № 1Ви могли б інкапсулювати свій ідентифікатор даних у тип структури.
Наприклад, у ваших приватних заголовках можна мати щось подібне
struct dbconn {
int id;
};
Хоча в заголовку ви експортуєте його як
struct dbconn;
typedef struct dbconn *dbconn_t;