在我们的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
我在网上的任何地方都找不到这种做法的解释。
6
保证在代码中其他地方更改常量可以保证以此方式工作。如果有人在其他地方定义了这些宏之一,则它们在解析此文件时不会被预处理器覆盖。
—
恩佐·费伯
这是WET设计原则的一个示例。
—
2015年
发布带有示例的答案,尝试进行编译。
—
恩佐·费伯