Một giải pháp khác là triển khai một thiết bị nối tiếp giả. Đó sẽ là một lớp mà Phần cứng được kế thừa từ Luồng và thực hiện các hàm thành viên ảo cần thiết với các hàm giả.
class NullSerial : public Stream {
public:
virtual size_t write(uint8_t) { return (1); }
virtual int available() { return (0); }
virtual int read() { return (0); }
virtual int peek() { return (0); }
virtual void flush() {}
...
void begin(unsigned long, uint8_t) {}
void end() {}
...
};
NullSerial Serial;
Vì serial không được định nghĩa là ký hiệu yếu, ứng dụng sẽ cần sử dụng biến Steam cho đầu ra. Và liên kết điều này với Phần cứng hoặc NullSerial.
#if defined(DEBUG)
Stream& trace = Serial;
#else
NullSerial noSerial;
Stream& trace = noSerial;
#else
#endif
...
trace.print(42);
Điều này không đầy đủ vì tất cả các chức năng thành viên của Phần cứng (mà bản phác thảo sử dụng) là cần thiết nhưng đưa ra ý tưởng chung về cách sử dụng OOP để giải quyết vấn đề.
Chúc mừng!
#ifdef ENABLE_PRINT
và#endif
sau đó xác định hoặc nhận xét#define ENABLE_PRINT
ở đầu tệp ur