2012-05-10 44 views
25

Tôi dường như không thể nhận được #elifdef để làm việc trong dự án iOS của mình. Nếu tôi làm điều này:Hỗ trợ Objective-C#elifdef?

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

Sau đó, phần trên cùng (dưới X) được tô sáng và phần dưới cùng không. Nếu tôi làm điều này:

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

Sau đó, phần dưới cùng (dưới khác) sẽ được tô sáng và hai phần trên cùng không làm nổi bật. Tại sao? Có cách nào khác tôi nên làm điều này không? Tôi có ba mục tiêu và tất cả đều sử dụng cùng một tập tin m. Tuy nhiên, các hằng số có một chút khác nhau cho mỗi mục tiêu vì vậy tôi tách chúng theo cách này.

+4

Tôi chưa bao giờ sử dụng lệnh tiền xử lý đó; Tôi đã luôn luôn sử dụng '#elif defined (THING)'. – trojanfoe

+0

@trojanfoe Cảm ơn! Điều đó đã làm nó! Tôi biết hầu như không có gì về các lệnh tiền xử lý, nhưng tìm kiếm google đã bật lên rất nhiều người sử dụng #elifdef vì vậy tôi đã cố gắng sử dụng nó. – borrrden

Trả lời

70

Bạn chỉ có thể viết:

#elif defined X 

nào phải phù hợp với tất cả các trình biên dịch ANSI-C tương thích.

+0

Tuyệt vời! Tôi còn quá trẻ để có kinh nghiệm C, vì vậy tôi không biết về rất nhiều thứ này><. Tôi cũng không biết truy vấn tôi nên tìm kiếm trên Google. Nó sẽ không cho phép tôi chấp nhận câu trả lời của bạn trong 9 phút, nhưng tôi sẽ quay lại. – borrrden

+6

Và bây giờ tôi sẽ ăn chân của tôi khi tôi thấy bạn cùng tuổi với tôi ...> _ < – borrrden

+0

Hãy xem tại đây: http://en.wikipedia.org/wiki/C_preprocessor – MByD