2009-12-19 85 views
0

我在Objective-C中編程,但是我想寫交流功能來提高性能。我寫了下面這篇文章的代碼,但編譯保持與以下錯誤回來:'function'之前預期的特定限定符列表和期望的'=',',';','asm'或'__attribute__'在'函數'之前

error: expected specific-qualifier-list before 'bool'

error: expected '=', ',', ';', 'asm' or 'attribute' before 'addToBoolArray'

structs.h:

typedef struct boolArray{ 
bool *array; 
int count; 
} boolArray; 

bool addToBoolArray(boolArray *bArray, bool newBool) 

structs.c:

#import "structs.h" 

bool addToBoolArray(boolArray *bArray, bool newBool) 
{ 
if(bArray->count > 0){ 
    bArray->array = realloc(bArray->array,(bArray->count+1)*sizeof(bool)); 
else{ 
    bArray->array = (bool *)malloc(sizeof(bool)); 
} 

if(bArray->array == NULL) 
    return false; 

bArray->array[bArray->count] = newBool; 
bArray->count++; 

return true; 
} 

我我發現很多關於這個錯誤的論壇主題,但他們都沒有解決我的問題。有任何想法嗎?

謝謝

回答

4

有在C89或Objective-C沒有bool類型。

對於普通C89,通常使用int

對於C99,你可以這樣做:

#include <stdbool.h> 

對於Objective-C中,似乎有一個爲BOOL一個typedef和常量TRUEFALSE,是NSObject.h。

+0

在C99有預定義的類型'_Bool'它,無需任何包含(#include)頭工作。 – pmg

+0

是的,當然它只是'typedef _Bool bool'。但在實踐中,我從未見過任何人直接使用'_Bool',就像沒有人直接使用'_Complex'一樣。這樣做的唯一原因是爲了避免引入新的關鍵字,這些關鍵字可能會與已被廣泛使用的關鍵字發生衝突。 –

1

你應該使用BOOL從<objc.h>,如果你想使用(在C99型)布爾,incude <stdboolh>

您還缺少一個;在頭文件中聲明addToBoolArray之後。

1

如果你想提高性能,你可能想使用一個bit vector代替bool秒的陣列...

相關問題