2013-10-09 17 views
26

Ho aggiornato il progetto in Xcode 5 e abilitato i moduli nelle impostazioni di compilazione. Tuttavia, vedo l'errore del compilatore Unexpected '@' in program quando utilizzo @import.@import "Inatteso" @ "nel programma"

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

E 'qualcos'altro che dovrebbe essere fatto?

+0

aggiungere il codice dove si utilizza @import –

risposta

64

Dal commento di @hw731 penso di usare male @import:

vecchia sintassi per importare quadro:

#import <UIKit/UIKit.h> 

ma ora, è possibile utilizzare la nuova sintassi:

@import UIKit; 

è necessario abilitare questi moduli per utilizzare la parola chiave @import (è abilitata per impostazione predefinita quando si crea un nuovo progetto con Xcode 5):

enter image description here

Date un'occhiata here.

+2

No, io uso corretto @import UIKit; Anche queste impostazioni sono impostate. – Shmidt

+0

Il problema era che utilizzo l'area di lavoro e che il secondo progetto occasionalmente perdeva le impostazioni del modulo. – Shmidt

+1

Questo ha funzionato per me. Ho un progetto che è stato avviato in iPhone OS 2.0 e questo è stato impostato su NO. Grazie! – jmurphy

5

Ho anche scoperto che utilizzando il codice seguente nel file di PCH:

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

non sono compatibili con @import.

12

Got stesso errore, controllare i luoghi standard:

  • Sì, ho sintassi del codice corretto
  • Sì, tutte le impostazioni "di Apple LLVM 5.0 - - Lingue Moduli" sono YES. Sia in questo progetto che in ciascuno dei suoi obiettivi.
  • Sì, sto utilizzando uno spazio di lavoro, ma ho verificato che tutti i progetti abbiano moduli abilitati. Entrambi i progetti e i loro obiettivi.
  • Sì, controllato Non ho nessuna frase "intelligente" divertente ovunque
  • Sì, ho controllato che sono in un file header.h o file.m (non .mm/.c/.cpp /. HPP)

il problema era che il file di intestazione era importato in file.mm file, che non sembra supportare la nuova sintassi del modulo @import! Ho convertito l'intestazione in vecchio formato #import in stile vecchio e tutto è andato bene.

+2

Anch'io ho alcuni file .mm per C++ (Protocol Buffers).Ho riconvertito la vecchia sintassi con #import nel file .pch. Tutto va bene adesso. – subv3rsion

0

stesso problema quando ho sottoclasse UIActivity e scrivo di proprietà in un file .m come

@property(nonatomic, strong)NSArray *activityItems; 

fissato spostando questa proprietà per .h file.