所有在我們的C代碼的基礎上,我看到每一個宏定義方式如下:爲什麼只定義一個宏,如果它尚未定義?
#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
什麼是做這些定義的檢查,而不是僅僅定義宏的原理是什麼?
#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
我無法在網絡上的任何地方找到這種做法。
在代碼中的其他位置更改常量可以保證以這種方式工作。如果別的地方有人定義了這些宏之一,那麼在解析該文件時,它們不會被預處理器覆蓋。 –
這是WET設計原理的一個例子。 – stark
用一個示例發佈答案,嘗試編譯它。 –