Есть ли какая-либо польза в том, что в C?
Пример в исходном коде SQLite:
/* struct sqlite3_stmt is never defined */
typedef struct sqlite3_stmt sqlite3_stmt;
И объект манипулируется так:
typedef struct Vdbe Vdbe;
struct Vdbe {
/* lots of members */
};
int sqlite3_step(sqlite3_stmt *pStmt) {
Vdbe *v = (Vdbe*) pStmt;
/* do stuff with v... */
}
Итак, почему бы просто не использовать обычный абстрактный тип, с фактической структурой, конфиденциально определенной в источнике foo.c
и общедоступным заголовком typedef
в foo.h
?