2012-05-10 3 views
25

Je n'arrive pas à obtenir #elifdef pour fonctionner dans mon projet iOS. Si je fais ceci:Est-ce que Objective-C supporte #elifdef?

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

Ensuite, celui du haut (sous X) est mise en surbrillance et celle du bas ne fonctionne pas. Si je fais ceci:

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

Puis le bas (sous else) est surligné et les deux premiers pas. Pourquoi? Y a-t-il un autre moyen de le faire? J'ai trois cibles et toutes utilisent le même fichier m. Cependant, les constantes sont un peu différentes pour chaque cible, donc je les sépare de cette façon.

+4

Je n'ai jamais utilisé cette commande de pré-traitement; J'ai toujours utilisé '#elif defined (THING)'. – trojanfoe

+0

@trojanfoe Merci! C'est ce que j'ai fait! Je ne sais presque rien sur les commandes du préprocesseur, mais une recherche google a fait apparaître beaucoup de gens utilisant #elifdef, donc j'ai essayé de l'utiliser. – borrrden

Répondre

70

Vous pouvez simplement écrire:

#elif defined X 

qui devrait être compatible avec tous les compilateurs compatibles ANSI-C.

+0

Excellent! Je suis trop jeune pour avoir expérimenté C, donc je ne connais pas beaucoup de choses de ce genre. Je ne connaissais pas non plus la requête que je devrais rechercher sur Google. Il ne me laissera pas accepter votre réponse pendant 9 minutes, mais je serai de retour. – borrrden

+6

Et je vais maintenant manger mon pied comme je vois que vous avez le même âge que moi ...> _ < – borrrden

+0

Jetez un coup d'oeil ici: http://en.wikipedia.org/wiki/C_preprocessor – MByD