2010-04-02 38 views

Trả lời

13

Trong Thông tin dự án, cho cấu hình Gỡ lỗi, hãy thêm Macro tiền xử lý "DEBUG" (trong GCC 4.2 - phần Tiền xử lý).

Trong mã của bạn, bạn có thể sử dụng #ifdef để xem nếu DEBUG được xác định nếu bạn muốn có một số mã được bao gồm hay không cho các bản dựng gỡ lỗi. Hoặc thậm chí bạn có thể thiết lập một biến (Tôi không thể tưởng tượng được tại sao bạn muốn điều này):

#ifdef DEBUG 
    BOOL isBuiltDebug = YES; 
#else 
    BOOL isBuiltDebug = NO; 
#endif 

EDIT: Vâng, một cách khác là xác định một giá trị boolean trong một Preprocessor Macro, ví dụ: "DEBUG_BUILD = 1 "cho cấu hình Gỡ lỗi và" DEBUG_BUILD = 0 "cho cấu hình Phát hành. Sau đó, bạn có thể sử dụng giá trị đó trong mã của mình:

if (DEBUG_BUILD) { 
    .... 
} 

Hãy cẩn thận không sử dụng tên macro có thể khớp với tên đã có trong mã của bạn hoặc trong bất kỳ tệp .h mà bạn có thể bao gồm bộ tiền xử lý sẽ thay thế nó và đó là một nỗi đau thực sự để tìm ra những loại lỗi đó.

+0

Mã sẽ là một phần của quận thứ 3 và nếu có thể, hãy tránh #ifdef, nhưng có thể sống với nó nếu không có giải pháp nào khác. – lolsborn

+0

Tôi không biết cách nào khác ngoài việc sử dụng macro tiền xử lý, nhưng bạn có thể tránh #ifdef, xem chỉnh sửa của tôi ở trên. – progrmr

+0

Cảm ơn bạn đã trả lời! –

5

Mà không cần phải suy nghĩ về việc xác định một macro tùy chỉnh tiền xử lý, bạn chỉ có thể viết một phương pháp tùy chỉnh như thế này:

+ (BOOL) isInDebugMode 
{ 
    #ifndef __OPTIMIZE__ // Debug Mode 
     return YES; 
    #else 
     return NO; 
    #endif 
} 

Hoặc chỉ cần viết mã của bạn inline trong các báo cáo:

#ifndef __OPTIMIZE__ // Debug Mode 
     // Your debug mode code 
    #else 
     // Your release mode code 
    #endif 

Cài đặt tiền xử lý __OPTIMIZE__ tự động được thiết lập bởi trình biên dịch liên quan đến cài đặt dự án của bạn, vì vậy bạn không phải lo lắng về nó.

Các vấn đề liên quan