2011-12-10 27 views
6

Ví dụ:Tại sao Xcode4 không làm nổi bật cú pháp trong các khối biên dịch có điều kiện?

#ifdef FREE_VERSION 
    tf.text = @"Free"; 
    NSLog(@"FREE VERSION"); 
#else 
    tf.text = @"Paid"; 
    NSLog(@"PAID VERSION"); 
#endif 

Phần đầu tiên có vẻ đẹp trong Xcode.

tf.text = @"Free"; 
    NSLog(@"FREE VERSION"); 

được đánh dấu cú pháp. Tuy nhiên, phần thứ hai không phải là:

tf.text = @ "Paid";

NSLog (@ "PHIÊN BẢN TRẢ TIỀN");

Có cài đặt như "Không làm nổi bật cú pháp trong #else các phần của mã cimpilation có điều kiện" không?

Trả lời

9

XCode sẽ thử và xác định nhánh tiền xử lý nào sẽ được thực hiện. Nhánh được dự kiến ​​thực thi sẽ có cú pháp tô sáng trong khi nhánh kia thì không.

3

Hầu hết các IDE bao gồm XCode và Visual Studio sẽ không đánh dấu mã trong các khối có điều kiện (không được lấy) vì trong nhiều trường hợp, điều này sẽ dẫn đến lỗi không áp dụng và làm sai lệch làm nổi bật. Xem xét sử dụng như

#ifdef __APPLE__ 
// Do something that uses apple-only headers/functions 
#endif 
#ifdef _MSVC_VER 
// Do something that visual studio recognizes 
#endif 

cho mã chạy trên nhiều nền tảng. Visual Studio sẽ không có bất kỳ ý tưởng làm thế nào để làm nổi bật tên chức năng của Apple và XCode sẽ không biết phải làm gì về Visual Studio pragmas, vv