2014-08-29 1 views
0

Я 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 .

+0

Я не понимаю, почему это не сработает. Можете ли вы показать весь префиксный файл? – trojanfoe

+0

@trojanfoe http://pastebin.com/m5WLMcsS (просто прокомментировал строку, временно. это нормально не прокомментировано) –

+0

И что произойдет, если вы переместите эти 'typedef' внутри блока #ifdef __OBJC__'? – trojanfoe

ответ

0

Нашел проблему. файл заголовка, который я получал ошибки на ввозились в файл PCH, перед в определениях типов. Я переместил выше определения типов импорта заголовка, и проблема исчезла.

+0

интересно видеть, что я снова столкнулся с одной и той же проблемой, искал ее и нашел свой собственный вопрос и ответ :) –

Смежные вопросы