我正在构建一个静态库,它有一些带有返回类型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();
}
答案 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
和_False
。 stdint.h
为宏提供了C ++名称bool
等,以映射到这些关键字。
请注意,BOOL
和bool
是不同的名称,因为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,它有效。