@import"程序中意外'@'

Shm*_*idt 26 ios ios7 xcode5

我将项目更新为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;
Run Code Online (Sandbox Code Playgroud)

还有什么应该做的吗?

Jor*_*tel 64

从评论中@hw731我认为你使用得很厉害@import:

旧语法导入框架:

#import <UIKit/UIKit.h>
Run Code Online (Sandbox Code Playgroud)

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

@import UIKit;
Run Code Online (Sandbox Code Playgroud)

你需要启用这些模块来使用关键字@import(当你使用Xcode 5创建一个新项目时默认启用它):

在此输入图像描述

看看这里.

  • 不,我使用正确的@import UIKit; 这些设置也已设置. (2认同)

JOM*_*JOM 12

得到相同的错误,检查标准位置:

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

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

  • 我也有一些用于C++(协议缓冲区)的.mm文件.我在.pch文件中使用#import转换回旧语法.现在一切都很好. (2认同)

Shm*_*idt 5

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

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
Run Code Online (Sandbox Code Playgroud)

与...不兼容@import.