在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
标题?
没有很好的理由。但很多人在C中做了很多愚蠢的事情,即使在大型的着名项目中也是如此。 – 2010-07-19 09:37:23
致R:你不会以那种不屑的态度走得很远。 sqlite是一个众所周知的成熟项目,因其质量而闻名。理查德·希普很可能知道他在做什么。 – 2010-07-19 09:46:32