为什么LLVM不使用Xcode编译pch文件中的typedeffed C块?

时间:2014-08-29 10:32:13

标签: c xcode llvm objective-c-blocks llvm-clang

我在我项目的PCH文件中输入了一个常用的C块类型:

typedef void (^UserBlock)(PFUser* user);

当我尝试在这样的标题中定义Objective C方法时:

+(void)ensureUserWithID:(NSString *)userID withCompletion:(UserBlock)completionHandler

我在Expected a type上收到UserBlock错误。但是,如果我将typedef从PCH移动到该头文件的开头,它会编译(带有警告Redefinition of typedef 'UserBlock' is a C11 feature。我已经清理了构建文件夹,删除了派生数据,重新启动了Xcode,但我仍然得到了同样的错误。我的PCH中也有其他定义,他们正在编译文件。我遇到的麻烦就是我的PCH中定义的C块类型。为什么我遇到这样的行为?我在Xcode 5.1上。 1和LLVM 5.1。

1 个答案:

答案 0 :(得分:0)

发现问题。我收到错误的头文件被导入到PCH文件之前 typedef。我已经将typedef移到了header导入之上,问题就消失了。