我对这个感到困惑.... SQLite是一个独立的项目,也是Workspace的一部分。构建目标时,LLVM抱怨:
<path>/sqlite3.c:44924:24: Incomplete definition of type 'struct Btree'
这是在44924行(以及44924之后的其他14个地方)。这是我看到的其他内容:
7145: /* Forward declaration */
7146: typedef struct Btree Btree;
...
11378: struct Btree {
11379: sqlite3 *db; /* The database connection holding this btree */
11380: BtShared *pBt; /* Sharable content of this btree */
11381: u8 inTrans; /* TRANS_NONE, TRANS_READ or TRANS_WRITE */
11382: u8 sharable; /* True if we can share pBt with another db */
11383: u8 locked; /* True if db currently has pBt locked */
11384: int wantToLock; /* Number of nested calls to sqlite3BtreeEnter() */
11385: int nBackup; /* Number of backup operations reading this btree */
11386: Btree *pNext; /* List of other sharable Btrees from the same db */
11387: Btree *pPrev; /* Back pointer of the same list */
11388:#ifndef SQLITE_OMIT_SHARED_CACHE
11389: BtLock lock; /* Object used to lock page 1 */
11390:#endif
11391:};
...
44919: static void lockBtreeMutex(Btree *p){
44920: assert( p->locked==0 );
44921: assert( sqlite3_mutex_notheld(p->pBt->mutex) );
44922: assert( sqlite3_mutex_held(p->db->mutex) );
44923:
44924: sqlite3_mutex_enter(p->pBt->mutex);
44925: p->pBt->db = p->db;
44926: p->locked = 1;
44927: }
我还尝试将结构在11378重命名为struct Btree_S
(并更改了typedef
)。同样的问题。
我想我的问题是,它怎么可能不完整?有什么想法吗?
答案 0 :(得分:2)
确保sqlite3.c
编译为C,而不是C ++。
答案 1 :(得分:0)
找到答案....未定义预处理器宏SQLITE_HAS_CODEC=1
。为什么没有定义?因为Xcode 4: Project does not honor $(inherited) Build Setting in Workspace?。
$(inherited)
在父代/子关系中的项目中无法按预期在Xcode 4中工作(尽管IDE的树视图显示了我们),以及文档对$(inherited)
的含义。
Xcode配置文件(xcconfig)也无法按预期工作。我无法将配置文件分配给其他子项目(仅限顶级项目)。
Apple应该解雇他们的整个QA部门和技术作家,并雇用一批新的ID10T。