안녕하세요? 바람돌이입니다.
이번에는 간략하게 프로그래밍을 할 때의 팁을 이야기 하겠습니다.

보통 프로그램을 작성하다보면, 디버깅을 위해서 printf문을 사용할 경우가 많습니다.
또한, 배포를 한 뒤에도, 남들이 자신의 코드를 보고 디버깅을 해야하는 경우가 종종있죠.
이를 위해서 상용적인 코드에는 다음과 같은 Tip을 종종 사용하곤 합니다.

다음과 같은 코드를 header 파일에서 보신적이 있으실 겁니다.

#ifdef XXX_DEBUG
   #define print_debug(A) printf(A)
#else
   #define print_debug(A)
#endif

정확한 명칭은 다를 수 있습니다.

간단하게 살펴보면, "#ifdef"는 뒤에 전처리기명이 정의 되어있으면, 이라는 뜻입니다.
즉, XXX_DEBUG가 선언이 되어있으면, 코드 내에 있는 print_debug(A) 부분은 모두 printf(A)로 치환됩니다.
그리고, 선언이 되어있지 않으면, print_debug(A)는 모두 사라지게 되는 것이죠.

보통 우리는 함수내에 printf(A)를 직접 삽입합니다.
그리곤, 필요없는 상황이 된다면, 삭제를 하지요. 그러나, 매우 귀찮을 일이 될 것이며, 실수로 삭제를 하지 않거나 하는 상황이 발생합니다.

그러나, 위의 코딩 기법을 사용하게 되면, XXX_DEBUG를 선언하지 않는 이상 실제 코드(컴파일한 파일)엔 debugging 코드는 존재하지 않게 되지요.

게다가 만약, 다시 디버깅을 해야하는 상황이 된다면, (다 완성이 되었다고 생각했는데, 오류가 있거나, 버전업을 할 경우) XXX_DEBUG만 다시 선언하면, 곧바로 Debugging을 수행할 수 있습니다.

조금만 더 기법을 사용한다면, debugging을 level 별로도 수행 가능할 것이라 생각합니다.
그 부분은 추후 기법으로 남겨놓죠. @^-^@



전처리기에 대한 것을 더 알고 싶으시다면, #ifndef , #ifdef , #endif #pragma 등등을 검색해 보시기 바랍니다.







+ Recent posts