Mẫu này cũng hữu ích cho việc phát hiện tính năng của thanh ghi trong bộ vi xử lý, như trong this question. Ví dụ, có thể có hai tập tin tương tự như tiêu đề, một trong số đó định nghĩa một bộ đếm thời gian, và một trong đó định nghĩa 2:
cheapprocessor.h
:
#define TMR1 TMR1
extern volatile int TMR1;
expensiveprocessor.h
:
#define TMR1 TMR1
extern volatile int TMR1;
#define TMR2 TMR2
extern volatile int TMR2;
Có nghĩa là trong bạn mã chính, khi bạn bao gồm một số chung là processor.h
đại diện cho tiêu đề thích hợp cho mục tiêu, bạn có thể phát hiện các tính năng:
#include <processor.h>
#ifdef TMR2
x = TMR2;
#else
x = 0; // no timer, probably because we're on the cheaper model
#endif
cảm thấy tự do để đánh dấu câu hỏi này như đã trả lời;) – claf