2012-05-10 19 views
25

Parece que no puedo obtener #elifdef para trabajar en mi proyecto de iOS. Si hago esto:¿Objective-C admite #elifdef?

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

A continuación, el de arriba (en X) consigue destacado y el de abajo no. Si hago esto:

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

Luego se resalta el inferior (debajo) y los dos superiores no. ¿Por qué? ¿Hay alguna otra forma en que debería estar haciendo esto? Tengo tres objetivos y todos usan el mismo archivo m. Sin embargo, las constantes son un poco diferentes para cada objetivo, así que los separé de esta manera.

+4

Nunca he usado ese comando previo al proceso; Siempre he usado '#elif defined (THING)'. – trojanfoe

+0

@trojanfoe ¡Gracias! Eso lo hizo! No sé casi nada sobre los comandos del preprocesador, pero una búsqueda en google encontró muchas personas que usaban #elifdef, así que traté de usarlo. – borrrden

Respuesta

70

simplemente hay que escribir:

#elif defined X 

que debe ser compatible con todos los compiladores ANSI-C compatibles.

+0

¡Excelente! Soy demasiado joven para haber experimentado C, así que no sé mucho de estas cosas><. Tampoco estaba muy segura de la consulta que debería buscar en Google. No me deja aceptar tu respuesta durante 9 minutos, pero volveré. – borrrden

+6

Y ahora me comeré el pie, ya que veo que tienes la misma edad que yo ...> _ < – borrrden

+0

Mira aquí: http://en.wikipedia.org/wiki/C_preprocessor – MByD