내 코드에 여러 유형의 출력 메시지를 원한다고 가정 해 봅시다. 그중 하나는 DEBUG
코드가 디버그 모드에서 컴파일 될 때만 인쇄됩니다.
보통은 다음과 같은 것을 작성해야합니다
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
많은 장소에서 사용하기가 번거롭고 성가시다.
코드 스 니펫에 대한 매크로를 정의하는 것이 좋은 방법이므로이 방법으로 사용 하시겠습니까?
MSG_DEBUG("Debug message")
아니면 매크로없이 처리하는 다른 더 우아한 방법이 있습니까? 다른 프로젝트에서 두 언어를 모두 사용하기 때문에 C 및 C ++의 가능한 솔루션에 관심이 있습니다.
constexpr if
C ++에서는 더 잘 구현 될 수 있습니다 .
STDERR
. 또한, 왜에 의존하지 NDEBUG
같은 assert()
대신합니까? 그런 다음 #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
스트림 상태를 테스트하는 것과 같이 정의 할 수 있습니다.