我經歷了同樣的編譯器錯誤:
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設備時。請注意,爲模擬器構建時沒有問題。
編譯器錯誤涉及調用GHAssertNotEqualObjects
和GHAssertNotEquals
。
當我收到編譯器錯誤是以下的,我用的代碼圖案:
- (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
,GHAssertNotNil
和GHAssertTrue
使用const NSString,即@「some string」,不會導致編譯器錯誤。
調查#define GHAssertNotEquals(a1, a2, description, ...)
和#define GHAssertEqualObjects(a1, a2, description, ...)
和他們的使用description
,都調用GHComposeString(description, ##__VA_ARGS__)
,但其他宏的工作。
在有人推薦它之前,我已經執行過Product - > Clean。 – ShogoDodo
由於我不能回答我自己的問題6個小時,這是我試圖提交的答案: - – ShogoDodo
我想我已經回答了這個問題。 最初,這是我的一個學校男孩錯誤。當返回的錯誤條件爲零時,我不應該測試null。 迄今爲止聽起來很容易。我糾正了代碼並重新編譯。相同的錯誤,但情況完全不同,在off_t值和零之間執行GreaterThan比較(cast to off_t)。 長話短說我懷疑問題是32 v 64位相關(分別在iPad和Simulator之間)。 – ShogoDodo