27

我将项目更新为 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

4 回答 4

64

@hw731我认为你使用不好的评论来看@import

导入框架的旧语法:

#import <UIKit/UIKit.h>

但现在,您可以使用新语法:

@import UIKit;

您需要启用这些模块以使用关键字@import(使用 Xcode 5 创建新项目时默认启用):

在此处输入图像描述

看看这里

于 2013-10-09T13:29:37.387 回答
13

得到同样的错误,检查了标准的地方:

  • 是的,我有正确的代码语法
  • 是的,所有“Apple LLVM 5.0 - 语言 - 模块”设置都是“是”。在这个项目和每个目标中。
  • 是的,我使用的是工作区,但检查了所有项目是否都启用了模块。两个项目及其各自的目标。
  • 是的,检查过我在任何地方都没有任何有趣的“聪明”报价
  • 是的,检查我是否在 header.h 或 file.m 文件中(不是 .mm/.c/.cpp/.hpp)

问题是头文件被导入到 file.mm文件中,这似乎不支持新的 @import 模块语法!将该标题转换回旧样式#import 格式,一切都很好。

于 2014-02-20T22:25:57.117 回答
5

我还发现在 pch 文件中使用以下代码:

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

不兼容@import

于 2013-10-31T11:11:22.243 回答
0

当我将 UIActivity 子类化并将 .m 文件中的属性写入为时,同样的问题

@property(nonatomic, strong)NSArray *activityItems;

通过将此属性移动到 .h 文件来修复。

于 2016-02-11T13:56:40.187 回答