2012-05-10 7 views
25

Ich kann nicht #elifdef in meinem iOS-Projekt arbeiten zu bekommen. Wenn ich das tue:Unterstützt Objective-C#elifdef?

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

Dann wird die oberste (unter X) hervorgehoben und die untere nicht. Wenn ich dies tue:

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

Dann wird die untere (unter sonst) markiert und die oberen beiden nicht. Warum? Gibt es einen anderen Weg, ich sollte das tun? Ich habe drei Ziele und sie alle verwenden die gleiche m-Datei. Allerdings sind die Konstanten für jedes Ziel ein wenig unterschiedlich, so dass ich sie auf diese Weise getrennt habe.

+4

Ich habe diesen Pre-Process-Befehl nie verwendet; Ich habe immer '#elif defined (THING)' verwendet. – trojanfoe

+0

@trjanfoe Danke! Das hat es geschafft! Ich weiß fast nichts über Präprozessorbefehle, aber eine Google-Suche hat viele Leute mit #elifdef angesprochen, also habe ich versucht, sie zu benutzen. – borrrden

Antwort

70

Sie können einfach schreiben:

#elif defined X 

die mit allen ANSI-C kompatiblen Compilern kompatibel sein sollte.

+0

Ausgezeichnet! Ich bin zu jung, um C zu erleben, also weiß ich nicht viel über diese Dinge><. Ich wusste auch nicht genau, nach welcher Suchanfrage ich bei Google suchen sollte. Ich werde deine Antwort nicht für 9 Minuten akzeptieren, aber ich komme zurück. – borrrden

+6

Und ich werde jetzt meinen Fuß essen, wie ich sehe, du bist das gleiche Alter wie ich ...> _ < – borrrden

+0

Werfen Sie einen Blick hier: http://en.wikipedia.org/wiki/C_preprocessor – MByD