2012-05-10 9 views
25

Non riesco a ottenere #elifdef per funzionare nel mio progetto iOS. Se faccio questo:Objective-C supporta #elifdef?

#ifdef X 
const Foo bar[] = { ... }; 
#else 
const Foo bar[] = { ,,, }; 
#endif 

Poi quello in alto (sotto X) viene evidenziato e quello inferiore non lo fa. Se faccio questo:

#ifdef W 
const Foo bar[] = { ;;; }; 
#elifdef X 
const Foo bar[] = { ... }; 
#else 
const Foo bar[] = { ,,, }; 
#endif 

Quindi quello in basso (sotto altro) viene evidenziato ei primi due no. Perché? C'è un altro modo in cui dovrei fare questo? Ho tre obiettivi e tutti usano lo stesso m file. Tuttavia, le costanti sono leggermente diverse per ogni obiettivo, quindi le separo in questo modo.

+4

Non ho mai usato quel comando di pre-elaborazione; Ho sempre usato '#elif defined (THING)'. – trojanfoe

+0

@trojanfoe Grazie! L'ha fatto! Non conosco quasi nulla dei comandi del preprocessore, ma una ricerca su google ha fatto apparire molte persone usando #elifdef, quindi ho provato ad usarlo. – borrrden

risposta

70

si può semplicemente scrivere:

#elif defined X 

Quale dovrebbe essere compatibile con tutti i compilatori ANSI-C compatibili.

+0

Eccellente! Sono troppo giovane per avere esperienza di C, quindi non so molto di questa roba><. Inoltre non conoscevo la query che dovrei cercare su Google. Non mi permetterà di accettare la tua risposta per 9 minuti, ma tornerò. – borrrden

+6

E adesso mangerò il mio piede quando vedo che hai la stessa età di me ...> _ < – borrrden

+0

Dai un'occhiata qui: http://en.wikipedia.org/wiki/C_preprocessore – MByD