llvm编译器的sqlite3编译错误

时间:2011-03-12 08:53:56

标签: objective-c c sqlite compiler-errors llvm

使用llvm 2.0编译器在新的xcode4上编译我的项目我从标准的<sqlite3.h>标题中得到一个奇怪的错误。问题在于以下几行:

//<sqlite3.h>
typedef struct sqlite3 sqlite3;

错误讯息:

In file included from /Projects/trunk/MyProj/Classes/StatsProvider.m:14:
Elaborated type refers to a non-tag type in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include/sqlite3.h

使用GCC 4.2项目编译没有问题

如何修复该错误?

2 个答案:

答案 0 :(得分:1)

我将错误消息解释为编译器在没有看到具有该名称的结构声明时抱怨使用struct sqlite3。结构名称位于特殊的“标记空间”中。

我的下一个猜测是新编译器比旧编译器更严格,并且发现了一个错误。

答案 1 :(得分:1)

我的猜测:您正在将sqlite编译为C ++代码,而您应该将其编译为纯C代码。 class / struct关键字在C ++中隐式引入了typedef,但在C中却不是这样。