在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