我在Objective-C编程,但我想编写一个c函数来提高性能。我已经在这篇文章下面编写了代码,但编译仍然会出现以下错误:
错误:在'bool'之前预期的特定限定符列表
错误:在'addToBoolArray'之前预期'=',',',';','asm'或'属性'
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;
}
我发现了很多关于此错误的论坛帖子,但似乎没有一个解决我的问题。有什么想法吗?
谢谢
答案 0 :(得分:4)
C89或Objective-C中没有bool
类型。
对于普通C89,通常使用int
。
对于C99,你可以这样做:
#include <stdbool.h>
对于Objective-C,似乎BOOL
有一个typedef,而常量TRUE
和FALSE
是NSObject.h。
答案 1 :(得分:1)
您应该使用&lt; objc.h&gt;中的BOOL。 ,如果你想使用(c99型)bool,incude&lt; stdboolh&gt;
你也错过了;在头文件中声明addToBoolArray之后。
答案 2 :(得分:1)
如果您尝试提高效果,可能需要使用bit vector代替bool
的数组......