@import "Неожиданное" @ "в программе"

Я обновил проект до Xcode 5 и включил модули в настройках сборки. Тем не менее, я вижу ошибку компилятора Unexpected '@' in program когда я использую @import,

#ifndef __IPHONE_7_0
#warning "This project uses features only available in iOS SDK 7.0 and later."
#endif

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif

#ifdef __OBJC__
@import SystemConfiguration;
@import UIKit;

Что-нибудь еще должно быть сделано?

4 ответа

Решение

Из комментария @hw731 Я думаю, что вы используете плохо @import:

старый синтаксис для импорта фреймворка:

#import <UIKit/UIKit.h>

но теперь вы можете использовать новый синтаксис:

@import UIKit;

вам нужно включить эти модули, чтобы использовать ключевое слово @import (это включено по умолчанию, когда вы создаете новый проект с Xcode 5):

Посмотрите здесь.

Получил ту же ошибку, проверил стандартные места:

  • Да, у меня правильный синтаксис кода
  • Да, все настройки "Apple LLVM 5.0 - Языки - Модули" - ДА. И в этом проекте, и у каждого свои цели.
  • Да, я использую рабочее пространство, но проверил, что во всех проектах включены Модули. Оба проекта и их цели.
  • Да, проверил, у меня нигде нет забавных "умных" цитат
  • Да, проверил, что я в файле header.h или file.m (не.mm/.c/.cpp/.hpp)

Проблема заключалась в том, что файл заголовка был импортирован в файл file.mm, который, похоже, не поддерживает новый синтаксис модуля @import! Преобразовал этот заголовок обратно в старый стиль #import, и все снова было хорошо.

Я также обнаружил, что с помощью следующего кода в файле pch:

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif

не совместимы с @import,

Та же проблема, когда я создаю подкласс UIActivity и записываю свойство в файл.m как

@property(nonatomic, strong)NSArray *activityItems;

исправлено перемещением этого свойства в файл.h.

Другие вопросы по тегам