Hãy nhìn vào mã này:Rỗng "phát hành" ASSERT macro tai nạn chương trình?
#include <cassert>
#ifdef DEBUG
#define ASSERT(expr) assert(expr)
#else
#define ASSERT(expr)
#endif /* DEBUG */
Chương trình sẽ chỉ chạy nếu tôi có DEBUG
xác định, nếu không nó sẽ treo và chấm dứt không có kết quả. Tôi đang sử dụng MinGW trong Eclipse Indigo CDT. Lời khuyên được đánh giá cao!
Đây có lẽ là thứ hai nhất lý do phổ biến (sau khi tối ưu hóa) cho sự khác biệt giữa bản dựng gỡ lỗi và bản phát hành. –
Cảm ơn bạn đã trả lời, chỉ một câu hỏi. Nó sẽ được thực hành tốt để chỉ '# define xác định (expr) (expr)' (như những gì Kerrek SB đã đề cập) cho không gỡ lỗi, và chỉ cần không lo lắng về tác dụng phụ từ đó? Tôi có cảm giác điều này sẽ làm cho mã của tôi dễ đọc hơn. – AutoBotAM
@AutoBotAM: Nếu bạn gọi đó là 'ASSERT'' VERIFY', hãy chắc chắn, tiếp tục. Nhưng không xác định lại 'ASSERT', mọi người biết và mong đợi nó không đánh giá biểu thức trên các bản dựng' NDEBUG'. –