프로그래밍 문제를 풀다가 보면, 간혹 특정 라이브러리 함수를 사용하지 못하게 하는 경우가 있습니다.
(삼성전자 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함수와 동일하게 인자를 넣어서 필요한 시기에 호출하면 됩니다.
'알고리즘 & Problem Solving' 카테고리의 다른 글
Google code jam 2019 Qualification Round 후기 (0) | 2019.04.07 |
---|---|
백준 17135번 캐슬 디펜스 문제 풀이 (1) | 2019.04.06 |
백준 3090번 차이를 최소로 문제 풀이 (0) | 2019.03.21 |
백준 1261번 문제 알고스팟 풀이 (0) | 2019.03.07 |
백준 2517 달리기 문제 풀이 (0) | 2018.10.27 |