내 코드에 여러 유형의 출력 메시지를 원한다고 가정 해 봅시다. 그중 하나는 DEBUG
코드가 디버그 모드에서 컴파일 될 때만 인쇄됩니다.
보통은 다음과 같은 것을 작성해야합니다
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
많은 장소에서 사용하기가 번거롭고 성가시다.
코드 스 니펫에 대한 매크로를 정의하는 것이 좋은 방법이므로이 방법으로 사용 하시겠습니까?
MSG_DEBUG("Debug message")
아니면 매크로없이 처리하는 다른 더 우아한 방법이 있습니까? 다른 프로젝트에서 두 언어를 모두 사용하기 때문에 C 및 C ++의 가능한 솔루션에 관심이 있습니다.
답변
물론, 처음에 매크로를 사용하는 것이 좋다면 동일한 조건부 코드를 계속 반복하는 대신 매개 변수가있는 것을 정의하는 것이 좋은 코딩의 척도로 바람직합니다.
매크로를 사용해야합니까? 내 견해로는 C로 받아 들여지기 때문에 매크로가없는 솔루션은 디버그 모드 외부에서도 적어도 무언가 를 실행 해야하기 때문 입니다. 일반적인 C 프로그래머는 언제든지 불필요한 런타임 노력에 비해 약간 못생긴 매크로를 선택합니다.
답변
여기에는 개인 취향 요소가 있지만 C ++에서는 헤더 파일 에서이 작업을 선호합니다.
#ifdef _DEBUG
void DebugMessage(...);
#else
inline void DebugMessage(...) {}
#endif
따라서 릴리스 빌드에서는 함수가 인라인으로 표시되지만 디버그 빌드에서는 적절한 함수이므로 적절한 유형 확인, 적절한 오류 메시지 등이 있으며 나중에 추가 기능 (로깅 가능 여부)을 추가 할 수 있습니다.
분명히, .cpp
파일에있는 함수의 해당 정의를 #ifdef _DEBUG
블록 으로 묶어야합니다 .
답변
확실히, 팀에서 제공 한 코드 지침을 따르지 않도록하십시오. 시스템의 다른 코드가 일반 if 조건을 통해 동일한 기능에 도달하지 않도록하십시오.