Я typedeffed тип C блок, который я использую, обычно, в PCH файл моего проекта:Почему LLVM не компилирует блоки с чередованием C в файл pch с Xcode?
typedef void (^UserBlock)(PFUser* user);
Когда я пытаюсь определить объективный метод C в заголовке, как это:
+(void)ensureUserWithID:(NSString *)userID withCompletion:(UserBlock)completionHandler
Я получаю Expected a type
Ошибка на UserBlock
. Однако, если я переведу typedef из PCH в начало этого файла заголовка, он скомпилирует (с предупреждением Redefinition of typedef 'UserBlock' is a C11 feature
.Я очистил папку сборки, удалил производные данные, перезапустил Xcode, но я все равно получаю ту же ошибку. У меня также есть другие определения в моем PCH, и они компилируют только файл. У меня возникают проблемы с типами блоков C, определенными в моем PCH. Почему я сталкиваюсь с таким поведением? Я нахожусь в Xcode 5.1.1 и LLVM 5.1 .
Я не понимаю, почему это не сработает. Можете ли вы показать весь префиксный файл? – trojanfoe
@trojanfoe http://pastebin.com/m5WLMcsS (просто прокомментировал строку, временно. это нормально не прокомментировано) –
И что произойдет, если вы переместите эти 'typedef' внутри блока #ifdef __OBJC__'? – trojanfoe