web-dev-qa-db-ja.com

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

他にすべきことはありますか?

26
Shmidt

@hw731のコメントから、私はあなたがひどく使用していると思います@import

フレームワークをインポートするための古い構文:

#import <UIKit/UIKit.h>

しかし今、あなたは新しい構文を使うことができます:

@import UIKit;

これらのモジュールでキーワード@importを使用できるようにする必要があります(Xcode 5で新しいプロジェクトを作成すると、デフォルトで有効になります)。

enter image description here

ご覧ください こちら

64
Jordan Montel

同じエラーが発生し、標準の場所を確認しました:

  • はい、正しいコード構文を持っています
  • はい、「Apple LLVM 5.0-言語-モジュール」の設定はすべてYESです。このプロジェクトとその各ターゲットの両方。
  • はい、ワークスペースを使用していますが、すべてのプロジェクトでモジュールが有効になっていることを確認しました。両方のプロジェクトとそれぞれのターゲット。
  • はい、チェックしました。どこにも面白い「スマート」な引用符はありません。
  • はい、header.hまたはfile.mファイル(.mm/.c/.cpp/.hppではない)にいることを確認しました

問題は、ヘッダーファイルがfile.mmにインポートされたファイルであることでした。これは、新しい@importモジュール構文をサポートしていないようです!そのヘッダーを古いスタイルの#import形式に変換し直したところ、すべてが問題なく動作しました。

12
JOM

また、pchファイルで次のコードを使用していることもわかりました。

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

と互換性がありません@import

5
Shmidt

UIActivityをサブクラス化し、.mファイルにプロパティを書き込むときに同じ問題

@property(nonatomic, strong)NSArray *activityItems;

このプロパティを.hファイルに移動することで修正されました。

0
Avijit Nagare