|
TRACE를 만들어 쓰고 있는데, 전처리계를 통해 디버그 빌드와 릴리즈 빌드일 때를 판단한 후, 디버그 빌드에서만 필요한 TRACE 구문을 모두 제거하고자 합니다.
예를 들면 이런 식이죠
#ifdef _DEBUG
#define TRACE mytrace
#else
#define TRACE (void)0
#endif
이를 위해 (void)0 같은 NULL operation을 쓰니 함수 호출이 잘못되었다는 컴파일러 오류 메세지가 나오더군요. BCB에, VC++에서 지원하는 __noop keyword와 같은 성격의 NULL operation이 있는지 궁금합니다. 없다면 비슷한 역할을 할 수 있는 수단이 있는지도 궁금하네요.
임시로 릴리즈 빌드에서도 TRACE를 그냥 호출하고, 대신 TRACE 함수 안에서 아무 일도 안하게 처리했습니다만, 컴파일만 될 뿐이지 전혀 원하는 결과(릴리즈 빌드에서 TRACE 호출 제거)는 아니기에 매우 슬픕니다.
|