티스토리 뷰

기타/기타

[C] #if 매크로 활용

words 2010. 12. 19. 15:57

커널 소스를 보게 되면 정신이 혼미해집니다.

수많은 매크로에 알아먹을 수 없는 문자들..

하지만 저도 잘 보지는 못하지만 자세히 들여다 보면 #if ~ #endif가 많이 등장하는 것을 볼 수 있으며
그로 인해 실제 코드는 얼마 안되는 것을 알 수 있습니다.

#if 계열 매크로에 대해 간단히 정리해 보았습니다.

1.
#if (A == B)
 ...
#endif

A와 B가 같을 때 매크로 사이의 내용을 실행하겠다는 의미이며 기본적인 if 구문과 동일합니다.

2.
#if (A == B)
 ...
#elif ( A== C)
 ...
#endif

이것 또한 직관적으로 받아들을 수 있습니다. #elif는 #else if의 줄임말으로써 편히 사용할 수 있습니다.


그렇다면 이러한 것을 어디서 사용할 수 있을까요?
저는 디버깅 관련 코드(출력문)를 매크로 사이에 넣어놓고, 
실행 모드에 관한 값을 매크로로 정의한 뒤, 그 값을 활성화 시키면 디버깅코드를 실행 하도록 하고
활성화 되지 않았을 경우에는 매크로 구문을 무시하도록 합니다. 

어색해서 그렇지 사용하다 보면 매우 편하더라구요.

그래서 일반적으로 #if(0)과 같은 형식으로도 많이 사용합니다. 항상 실행하지 않겠다는 뜻이며 
실행하고 싶을 때는 0의 값을 1로 바꾸어 주면 되겠죠.

잘 활용해 보시길!


댓글