일반적인 경우 디버깅 함수를 추가할 경우 조건부 컴파일을 이용해서 처리한다.
간단히 예를 보면
#ifdef DEBUG
fprintf(stderr,'[%d:%d]\t%s\n",__FUNCTION__,__LINE__,msg );
#endif
그런데 이런식으로 하나의 값을 보기 위해 #ifdef부터 해서 3개줄로 표시를 해야한다. 본인 경험으로는 이런 코드가 많이 질수록 코드가 간결해 보이지 않았다. 보다 코드를 간결하게 처리하기 위해서 다음과 같은 방법을 소개한다.
우선 c파일 상당에
#ifdef DEBUG
#define debug(x) x
#else
#define debug(x)
#endif
위와 같이 선언을 하고 디버깅을 위해 변수값을 추가하는 부분에서는
debug( fprintf(stderr,'[%d:%d]\t%s\n",__FUNCTION__,__LINE__,msg ));
처럼 처리를 한다.
조건부 컴파일과 관련된 코드는 코드 상단에 한번만 정의하면 되기 때문에 코드작성도 효율적이고 코드역시 보다 간결하게 보인다.