2017-02-22 3 views
-1

이제 다시 혼란스러워합니다. 이전의 C 코드에서 이상한 부분을 발견했습니다. 터미널에 인쇄하는 것처럼 보이는 덤프 함수가 있는데 왜이 "#if 0"이 사용되었는지 설명 할 수 있을지 궁금합니다."#if 0 ... # endif"선언의 목적은 무엇입니까

내 생각 엔

#if 0 
dump(b, cnt) 
    char *b; 
    int cnt; 
{ 
    int i; 

    if (cnt == 0) 
    return; 

    for (i=0; i < cnt; i++, b++){ 
    if ((i % 16) == 0) 
     printf("\n"); 
    printf("0x%02x ", *b); 
    } 
} 
#endif 
+2

쉽게 테스트를 위해 코드 조각을 활성화/비활성화 할 수 있습니다. –

+0

그리고 당신은 그것이 주석과 동등하지 않다고 생각할 필요가 있습니다. –

답변

1

이는 "옛날 방식"으로는 별도의 방법 아니에요 ....이 코드를 주석하는 옛날 방식이라는 것이다. 이것은 선행 처리기를 사용하여 포함 된 행을 잘라내어 컴파일러가 결코 볼 수 없도록합니다.

"기능 토글"의 극단적 인 형식입니다. 자주

#if defined SOME_HANDY_FEATURE 
void use_some_handy_feature(int handyness) 
{ 
    ... 
} 
#endif 

그러나 여기 #define 같은 코드는 물론 거짓 문자 그대로 0에 의해 대체되기 때문에 코드 블록 제거를 참조하십시오.

제거 된 코드에 덧글이 포함되어 있어도 편리하기 때문에 편리합니다. 보통 /* ... */ 덧글은 중첩하지 않기 때문에 주석이 없습니다.

+0

고마워. 내 직감이 옳았 어. 미안 해요 전에 물어보고 싶었던; (내 실수. –

관련 문제