@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;

Это что-то еще, что нужно сделать?

Ответ 1

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

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

#import <UIKit/UIKit.h>

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

@import UIKit;

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

enter image description here

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

@property(nonatomic, strong)NSArray *activityItems;

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