I updated project to Xcode 5 and enabled modules in build settings.
However, I see compiler error Unexpected '@' in program
when I use @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;
Is it anything else that should be done?
From the comment of @hw731
I think you use badly @import
:
old syntax to import framework :
#import <UIKit/UIKit.h>
but now, you can use the new syntax :
@import UIKit;
you need to enable theses modules to use the keyword @import
(it's enable by default when you create a new project with Xcode 5) :

Have a look here.
Got same error, checked the standard places:
- Yes, I have correct code syntax
- Yes, all the "Apple LLVM 5.0 - Languages - Modules" settings are YES. Both in this project and each its targets.
- Yes, I'm using a workspace, but checked that all projects have enabled Modules. Both projects and their each targets.
- Yes, checked I don't have any funny "smart" quotes anywhere
- Yes, checked that I'm in a header.h or file.m file (not .mm/.c/.cpp/.hpp)
The problem was that the header file was imported into file.mm file, which doesn't seem to support the new @import module syntax! Converted that header back to old style #import format and everything was fine again.
I also found that using following code in pch file:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
are not compatible with @import
.
Same problem when i subclass UIActivity and write property in .m file as
@property(nonatomic, strong)NSArray *activityItems;
fixed by moving this property to .h file.
来源:https://stackoverflow.com/questions/19272683/import-unexpected-in-program