Trên khắp cơ sở mã C của chúng tôi, tôi thấy tất cả các vĩ mô được xác định theo cách sau:Tại sao chỉ xác định macro nếu macro chưa được xác định?
#ifndef BEEPTRIM_PITCH_RATE_DEGPS
#define BEEPTRIM_PITCH_RATE_DEGPS 0.2f
#endif
#ifndef BEEPTRIM_ROLL_RATE_DEGPS
#define BEEPTRIM_ROLL_RATE_DEGPS 0.2f
#endif
#ifndef FORCETRIMRELEASE_HOLD_TIME_MS
#define FORCETRIMRELEASE_HOLD_TIME_MS 1000.0f
#endif
#ifndef TRIMSYSTEM_SHEARPIN_BREAKINGFORCE_LBS
#define TRIMSYSTEM_SHEARPIN_BREAKINGFORCE_LBS 50.0f
#endif
lý do làm những xác định kiểm tra thay vì chỉ định macro là gì?
#define BEEPTRIM_PITCH_RATE_DEGPS 0.2f
#define BEEPTRIM_ROLL_RATE_DEGPS 0.2f
#define FORCETRIMRELEASE_HOLD_TIME_MS 1000.0f
#define TRIMSYSTEM_SHEARPIN_BREAKINGFORCE_LBS 50.0f
Tôi không thể tìm thấy thực tiễn này được giải thích ở mọi nơi trên web.
Thay đổi các hằng số ở một nơi khác trong mã được đảm bảo hoạt động theo cách này. Nếu ở một nơi khác, ai đó định nghĩa một trong những macro đó, chúng sẽ không bị ghi đè bởi bộ tiền xử lý khi nó phân tích cú pháp tệp này. –
Đó là một ví dụ về nguyên tắc thiết kế WET. – stark
Đã đăng câu trả lời với một ví dụ, hãy thử biên dịch nó. –