#if... #endif : 참이라면

: if 매크로는 '참'이냐 '거짓'이냐를 기준으로 동작.






#ifdef... #endif : 정의되었다면

:ifdef 매크로는 "정의되었느냐(참)", "정의되지 않았느냐(거짓)"를 기준으로 동작.




이 매크로는 정의되었느냐를 판단하기에 옆에 참 거짓을 의미하는 1과 0을 생략한다.




#ifndef...#endif : 정의되지 않았다면

※ #ifndef는 헤더파일의 중복포함을 막기 위해 주로 사용이 된다.





#if와 함께 사용할 수 있는 "defined" 연산자

: defined 연산자는 매크로 #if문의 구성에 활용할 수 있는 연산자이다. 이 연산자의 덕분으로 #if문에서도 매크로의 정의 유무를 확인할 수 있게 된다.




defined 연산자 덕분에 코드가 한결 간결해졌다.




#undef : 이전에 정의된 매크로를 무효화




매크로 DATE를 무효화시키고 있다. 무효화시킨다는 것은 전처리기의 기억에서 지우는 것을 의미한다. 그런데 앞서 매크로  DATE가 정의된 적이 없다. 하지만 이는 오류가 아니다.

#undef는 정의되지 않은 매크로의 무효화 명령에도 오류를 발생시키지 않기 때문이다. 따라서 정의 유무가 확실하지는 않지만, 무효화시켜야 할 매크로가 있다면 언제든지 #undef 명령문을 구성하면 된다.


※ 매크로의 무효화 과정 없이도 재정의는 가능하다. 그러나 경고메시지가 발생하므로 무효화 과정을 거치는 것을 권장.


Posted by scii
: