2010-04-02 3 views

답변

13

프로젝트 정보에서 디버그 구성을 위해 "DEBUG"(GCC 4.2 - 전처리 섹션에 있음)의 프리 프로세서 매크로를 추가하십시오.

코드에서 #ifdef를 사용하여 디버그 빌드에 포함 할 코드를 포함 시키려면 DEBUG가 정의되어 있는지 확인할 수 있습니다. 아니면도 (당신이 원하는 것이 왜 상상할 수없는) 변수를 설정할 수 있습니다

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

편집 : 음, 또 다른 방법은 전 처리기 매크로, 즉에서 부울 값을 정의하는 것입니다 : "DEBUG_BUILD = 1 "및 릴리스 구성의 경우"DEBUG_BUILD = 0 "입니다. 때문에,

if (DEBUG_BUILD) { 
    .... 
} 

그냥 코드에서 또는 당신이 중 하나를 포함 할 수있는 .H 파일에 이미있는 이름과 일치 할 수있는 매크로 이름을 사용하지 않도록주의 : 그럼 당신은 당신의 코드에서 그 값을 사용할 수 있습니다 전처리 기는 그것을 대체 할 것이고 그러한 종류의 버그를 찾는 것은 정말 고통 스럽습니다.

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

하거나 그 문에서 인라인 코드를 작성 :

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

사용자 지정 처리기 매크로 정의에 대해 생각하지 않고

+0

코드는 제 3 자 dist의 일부가 될 것이고 가능하다면 #ifdef를 피하는 것을 좋아할 것이지만 다른 해결책이 없다면 그것과 함께 살 수 있습니다. – lolsborn

+0

전처리 매크로를 사용하는 것 이외의 다른 방법을 모르지만 #ifdef를 피할 수 있습니다. 위의 편집을 참조하십시오. – progrmr

+0

답변 해 주셔서 감사합니다! –

5

, 당신은 이와 같은 사용자 정의 방법을 쓸 수 있습니다 __OPTIMIZE__ 프리 프로세서 설정은 프로젝트 설정과 관련하여 컴파일러가 자동으로 설정하므로 걱정할 필요가 없습니다.

관련 문제