Giả sử tôi muốn có một số loại thông báo đầu ra trong mã của mình. Một trong số đó là DEBUG
, chỉ được in khi mã được biên dịch ở chế độ Gỡ lỗi.
Thông thường tôi phải viết một cái gì đó như
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
đó là khá cồng kềnh và khó chịu để sử dụng ở nhiều nơi.
Có phải là một cách thực hành tốt để xác định một macro cho đoạn mã, vì vậy bạn sẽ sử dụng nó theo cách này?
MSG_DEBUG("Debug message")
Hoặc có cách nào khác, thanh lịch hơn để đối phó với nó mà không cần macro? Tôi quan tâm đến các giải pháp khả thi cả trong C và C ++, vì tôi đang sử dụng cả hai ngôn ngữ trong các dự án khác nhau.
constexpr if
C ++.
STDERR
. Ngoài ra, tại sao không làm cho nó phụ thuộc vào NDEBUG
như assert()
thay vào đó? Sau đó, bạn có thể định nghĩa nó như thế nào #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, cũng kiểm tra trạng thái luồng.