2012-11-10 56 views
1

我被這個莫名其妙一個.... SQLite是一個獨立的項目和工作區的一部分。當構建目標,LLVM抱怨:的Xcode(LLVM)和SQLite:錯誤:類型不完全定義「結構B樹」

<path>/sqlite3.c:44924:24: Incomplete definition of type 'struct Btree' 

這是在線路44924(14以下44924等地)。這裏還有我所看到的:

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

嘗試查看預處理源;預處理器可以對源代碼做出奇怪的事情。另外,如果您詢問編譯器診斷,請包含完整的診斷輸出。 – servn

+0

謝謝@servn。我試圖清理一個拒絕,我認爲它與http://stackoverflow.com/questions/13327744/xcode-4-subproject-does-not-honor-inherited有關。我會很快得到輸出。 – jww

+0

你的'sqlite3.c'版本中的第44924行是什麼? –

回答

2

確保sqlite3.c被編譯爲C,而不是C++。

+0

謝謝CL。我知道如何調出構建設置,但是如何在Xcode中爲文件(而不是項目)執行此操作。我右鍵單擊sqllite3.c,在「顯示文件檢查器」後我什麼也沒有得到。 – jww

+0

謝謝CL。這些要點是你的錯誤,因爲你遭受了我的錯誤。 – jww

0

找到了答案....宏觀SQLITE_HAS_CODEC=1預處理沒有定義。爲什麼沒有定義?由於Xcode 4: Project does not honor $(inherited) Build Setting in Workspace?

$(inherited)在父項/子項目關係(儘管IDE的樹狀視圖顯示給我們)中的項目中不能像預期的那樣在Xcode 4中工作,以及文檔暗示的關於$(inherited)的內容。

Xcode的配置文件(xcconfig)如預期要麼不工作。我無法獲得分配給其他子項目的配置文件(只有頂級項目)。

蘋果應該解僱他們的整個QA部門和技術作家,並聘請ID10Ts的一個新的一羣。