2011-07-28 50 views
4

當我試圖構建我的測試目標到我的iPad1(4.3.5)或iPhone4(4.3.5)我從Xcode 4(構建4A304a):當建立到設備,但不是在模擬器中獲取LLVM錯誤

Internal compiler error: tree check: expected tree that contains 'decl with visibility' structure, have 'const_decl' in c_common_truthvalue_conversion 

但是,當測試目標切換到在模擬器中構建時沒有。

的是borking這行代碼是

GHAssertNotNULL(xxxObject, @"xxxObject could not be created"); 

(對象已被重命名,以保護無辜;-)),但我可以說這是一個單身。

我搜索谷歌,沒有得到任何與此錯誤相關的東西。

感謝您提前 伊恩。

+0

在有人推薦它之前,我已經執行過Product - > Clean。 – ShogoDodo

+0

由於我不能回答我自己的問題6個小時,這是我試圖提交的答案: - – ShogoDodo

+0

我想我已經回答了這個問題。 最初,這是我的一個學校男孩錯誤。當返回的錯誤條件爲零時,我不應該測試null。 迄今爲止聽起來很容易。我糾正了代碼並重新編譯。相同的錯誤,但情況完全不同,在off_t值和零之間執行GreaterThan比較(cast to off_t)。 長話短說我懷疑問題是32 v 64位相關(分別在iPad和Simulator之間)。 – ShogoDodo

回答

2

我經歷了同樣的編譯器錯誤:

internal compiler error: tree check: expected tree that contains 'decl with visibility' structure, have 'const_decl' in c_common_truthvalue_conversion, at c-common.c:2836 

使用的Xcode 4.1 GHUnitIOS-0.4.32(和GHUnitIOS-0.4.31)建立iOS設備時。請注意,爲模擬器構建時沒有問題。

編譯器錯誤涉及調用GHAssertNotEqualObjectsGHAssertNotEquals

當我收到編譯器錯誤是以下的,我用的代碼圖案:

- (void) test_isEqual { 
    SomeObject *foo = [[SomeObject alloc] initWithValue: 1]; 
    SomeObject *bar = [[SomeObject alloc] initWithValue: 2]; 

    GHAssertNotEquals(bar, foo, @"Different Objects, different values - different pointers"); 
    GHAssertNotEqualObjects(bar, foo, @"Different Objects, different values - different pointers (calls isEqual)"); 
} 

我能夠作以下修改來編譯的代碼:

- (void) test_isEqual { 
    NSString *comment; 
    SomeObject *foo = [[SomeObject alloc] initWithValue: 1]; 
    SomeObject *bar = [[SomeObject alloc] initWithValue: 2]; 

    comment = @"Different Objects, different values - different pointers"; 
    GHAssertNotEquals(bar, foo, comment); 

    comment = @"Different Objects, different values - different pointers (calls isEqual)"; 
    GHAssertNotEqualObjects(bar, foo, comment); 
} 

注意調用GHAssertEqualObjects,GHAssertEqualStrings,GHAssertEquals,GHAssertFalse,GHAssertNil,GHAssertNotNilGHAssertTrue使用const NSString,即@「some string」,不會導致編譯器錯誤。

調查#define GHAssertNotEquals(a1, a2, description, ...)#define GHAssertEqualObjects(a1, a2, description, ...)和他們的使用description,都調用GHComposeString(description, ##__VA_ARGS__),但其他宏的工作。

+0

Thx!我遇到過同樣的問題。我能夠通過使用稍微不同的自定義斷言宏來解決它。通過傳遞字符串常量指針,而不是在函數調用中內聯它,我可靠地克服了這個問題。 – pchap10k

相關問題