프로그래밍 문제를 풀다가 보면, 간혹 특정 라이브러리 함수를 사용하지 못하게 하는 경우가 있습니다.

(삼성전자 SW Expert Academy에서 보는 상시 SW 역량 테스트 B형 문제라던지...)


이러한 경우 로컬에서 디버깅을 위해서 printf 함수 등을 사용하다가 제출 할 때에는 이 함수들을 다 제거를 해야 하는데, 이러한 일들이


엄청 귀찮게 되는 경우가 있는데 이러한 귀찮음을 없애줄 수 있는 전처리문 코드를 공유합니다.




 

#ifdef WIN32
#define log(...) printf(__VA_ARGS__)
#else
#define log(...) (void)0
#endif


위와 같은 코드를 소스코드 파일 상단에 추가를 해 놓으면 log라는 함수를 이용해서 printf 함수 기능을 사용할 수 있습니다.


윈도우즈 환경에서는 printf 기능이 잘 동작하게 되고, 제출을 할 경우 (일반적으로 서버는 리눅스 환경인 경우가 많으므로), log 함수들이 (void)0으로 치환


되게 되므로 아무런 동작을 하지 않게 됩니다.


아니면 제출할 경우에만 #define 구문을 상황에 맞게 주석 처리를 하면, 엄청나게 남발해놓은 printf함수를 한두줄 코드 바꾸는 것으로 모두


비활성화 하거나 활성화 할 수 있습니다.


log함수는 printf함수와 동일하게 인자를 넣어서 필요한 시기에 호출하면 됩니다.

+ Recent posts