2012-07-13 10 views
5

Sto osservando Objective-C e noto, ad esempio, che una dichiarazione dell'interfaccia di classe inizia con @interface. Bene, nessun problema. Pertanto, il testo suggerisce che non è consentito uno spazio tra @ e interface. Tuttavia, quando passo il seguente semplice esempio per il compilatore GCC in un file *.m:Gli spazi sono consentiti dopo che `@` sta iniziando una dichiarazione in Objective-C?

@ interface A 
@ end 

il compilatore accetta il codice senza denuncia. Qualcuno può indirizzarmi verso un riferimento che dice esplicitamente se @ interface sia o meno considerato accettabile dalla specifica Objective-C? Non ho trovato nulla nei documenti di Apple del 2008 e del 2011 per dire in un modo o nell'altro oltre al semplice testo alluso a prima nella domanda.

Grazie in anticipo.

EDIT: Può essere la pena di notare Emacs esegue colorazione del testo a seconda che l'identificatore è una parola chiave o no; le parole chiave sono blu e le parole chiave non gialle sono gialle. I colori @interface blu e @ interface colori gialli. Comportamento simile si verifica in Vim.

+1

Le lingue di tipo C tendono a essere vaghe su dove gli spazi bianchi possono apparire vicino ai simboli. Immagino che uno spazio non contenga davvero, specialmente se, come dici tu, compila. – Almo

+0

Sì, non ricordo di aver mai visto questo problema risolto in alcuna documentazione. Per la maggior parte, '@' è usato per innescare il preprocessore Objective-C per fare cose speciali, in un modo o nell'altro, così che sarebbe il preprocessore, non il compilatore C, che decide. (Buona domanda!) –

+0

Punto interessante, Hot Licks, ad eccezione della documentazione Objective-C che ho specificato '@ interface' è una direttiva del compilatore, distinta dalle direttive del preprocessore come' # import'. –

risposta

3

Non esiste alcuna specifica formale per Objective-C (oltre The Objective-C Programming Language). Non c'è sicuramente una definizione in stile BNF delle convenzioni dello spazio bianco. Se si compila, si tratta del più vicino che dobbiamo "legale". Questo è vero per molte lingue. Perl è meglio definito come "quelle stringhe che l'eseguibile perl non rifiuterà." (Almeno secondo me ....)

Detto questo, lo stile corretto è @interface senza spazio. Vedi Defining a Class.

Problemi correlati