2017-11-24 25 views
3

은 내가 조건부 같은 컴파일 C 프리 프로세서를 사용할 수 있습니다 알고C 전 처리기를 사용하여 조건부로 매크로 값을 확인할 수 있습니까? 내가 사용하고자하는 즉</p> <pre><code>#define USEDFEATURE 4 #if defined USEDFEATURE == 4 usefeature(4); #endif </code></pre> <p>:

#define USESPECIALFEATURE 

#if defined USESPECIALFEATURE 
usespecialfeature(); 
#endif 

을하지만 이런 식으로 뭔가를 할 수 있을지 궁금 선행 처리기는 특정 매크로 정의 값을 검사합니다. 시도해도 작동하지 않습니다.

답변

8

절대적 : 그것은 매크로 매크로 특정 값을 갖는다 여부, 정의되어 있는지 여부를 확인

#define MACRO 10 

#if MACRO == 10 
enable_feature(10); 
#endif 

에서, define 문 놓는다.

#if MACRO > 10 
#if MACRO < 10 
#if MACRO + ANOTHER > 20 
#if MACRO & 0xF8 
#if MACRO^ANOTHER 
#if MACRO > 10 && MACRO < 20 

... 그리고 체인 조건문 :

당신도를 arithmetics의 다양한 사용할 수 있습니다

#if MACRO == 1 
enable_feature(1); 
#elif MACRO == 2 
enable_feature(2); 
#endif 
+0

당신은 식별자가 이전에 정의 된 경우, 당신도 체크 할 필요가 없습니다 말할 수 그 가치를 테스트합니다. '# if'와'# elif' 문에서 정의되지 않은 식별자는 0으로 취급됩니다. –

4

당신의 생각은 가능하다,하지만 당신은 잘못을 사용하고 있습니다.

#define YOUR_MACRO 3 

#if YOUR_MACRO == 3 
    do_job(3); 
#endif 

아니요 defined 값으로 비교하려는 경우 확인하십시오. 매크로가 정의되지 않은 경우,이 #if 검사에 0로 평가 위

#if NOT_DEFINED_MACRO 
do_something(); 
#endif 

코드가 같다 :

#if 0 
do_something(); 
#endif