2013-02-15 4 views
2

질문

내 테스트가 예일 경우에만 경고를 보내고 싶습니다. 이것이 가능한가? 내가 지금 가지고있는 것은 효과가 없습니다. 어떻게해야합니까? 아래의 답변에 따라조건부 컴파일 경고 상수

BOOL const TESTING = NO; 
#if TESTING == YES 
    #warning don't forget to turn testing to NO before upload 
#endif 

답변

가 여기에 나를 위해 일한 것입니다 :

#define _TESTING // COMMENT THIS OUT TO DISABLE TESTING MODE 
#ifdef _TESTING 
    BOOL const TESTING = YES; 
    #warning don't forget to turn testing to NO for production 
#else 
    BOOL const TESTING = NO; 
#endif 
+2

예, 프로그램과 매크로 이름 공간은 완전히 다릅니다. 프로그램 값 TESTING을 NO로 설정해도 매크로 변수 TESTING의 값에는 아무런 영향을 미치지 않습니다 (실제 컴파일러가 프로그램을보기 전에 텍스트 대체 패스에서 매크로 변수의 값이 다른 방향으로 대체되지만). –

+0

@HotLicks : 프로그램에서 그의 '테스팅'bool을 사용하여 경고보기 등을 보여 주면 프로그램 코드가 인식 할 수 있도록 'BOOL const TESTING = NO;'를 유지해야합니다. 옳은? 그래서 그는'#define TESTING'을 주석으로 처리하고'BOOL const TESTING = NO'를 설정해야합니다. – GeneralMike

+0

그는 BOOL 변수 테스팅의 이름을 지정하지 않아야합니다. 그렇지 않으면 매크로 단계가 NO로 바뀌므로 일부 신비한 컴파일 오류가 발생합니다. 따라서 매크로 변수에는 항상 모든 대문자를 사용하고 프로그램 변수에는 대문자를 사용하지 마십시오. 그러나 매크로 변수 TESTING이 ifdefs 또는 다른 기술을 사용하여 Testing 변수의 설정을 제어하게 할 수 있습니다. –

답변

2

당신이 그런

#ifdef TESTING 
    #warning //... warning here 
    BOOL const testingBool = YES; 
#else 
    BOOL const testingBool = NO; 
#endif 

와 무슨 교체를 시도, 당신은 필요 타겟의 빌드 설정에서 "전 처리기 매크로"로 테스팅을 추가하십시오 (자세한 내용은 this 참조). 그 방법에 관한 것).

+0

빌드 구성에서'TESTING'을 정의하여 전역 적이며 쉽게 변경할 수 있도록하는 것이 더 좋습니다. – trojanfoe

+0

@ 트로이안 호프 : 제안, 수정 된 답변 (설정 방법을 설명하는 링크 포함)에 감사드립니다. – GeneralMike