错误:Xcode中c函数的未知类型名称BOOL

时间:2015-07-16 13:04:03

标签: ios objective-c c xcode

我正在构建一个静态库,它有一些带有返回类型bool的c函数(.h和.m文件),在将它添加到我现有项目之后我得到未知类型名称'BOOL'。 我尝试导入stdbool.h,但我仍然得到同样的错误。所以有人能告诉我在Xcode项目中添加c函数的正确方法。方法定义看起来像

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String response = new String(data);

FileOutputStream out = new FileOutputStream("content.csv", true);
String regex = "\"Content\":\"(\\d+)\"";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(response);
if (m.find()) {
    String content = m.group(1);
    out.write(content.getBytes());
    out.write(System.getProperty("line.separator").getBytes());
    out.flush();
}

3 个答案:

答案 0 :(得分:5)

stdbool.h中,定义以bool提供,这是一个扩展到_Bool的MACRO。您使用的BOOL不是标准C

如果您想使用stdbool.h提供的标准定义,您可能需要将BOOL更改为bool

否则,您需要使用其他一些特定的头文件,它实际上为您的实现提供了BOOL的定义。注意

注意:as mentioned in the comments Mr Blagovest Buyukliev,您可能需要<Foundation/Foundation.h>

答案 1 :(得分:1)

自C99以来的C标准将_Bool定义为关键字,以及_True_Falsestdint.h为宏提供了C ++名称bool等,以映射到这些关键字。

请注意,BOOLbool是不同的名称,因为C区分大小写。因此,您应该将BOOL更改为bool如果这是不可能的(例如,如果您使用外国图书馆),

#include <stdbool.h>
#define BOOL bool

答案 2 :(得分:0)

Apple软件被打破了。

Apple无视我的3.2.6项目设置,决定使用LLVM 3.0套件而不是GCC 4.2。之前(根据Xcode 3.2.6),由于我广泛使用GCC警告和标志,我特意将项目设置为使用GCC。

我更改了“构建设置”后 - &gt; “编译C / C ++ / Objective”回到GCC 4.2,它有效。