In tutta la nostra base di codice C, vedo ogni macro definita nel seguente modo:Perché definire una macro solo se non è già definita?
#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
Qual è la logica di fare questi controlli definiscono anziché definire soltanto le macro?
#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
Non riesco a trovare questa pratica spiegata da nessuna parte sul web.
Cambiare le costanti da qualche altra parte nel codice è garantito che funzioni in questo modo. Se da qualche parte qualcuno definisce una di queste macro, non verrà sovrascritto dal preprocessore quando analizza questo file. –
È un esempio del principio di progettazione WET. – stark
Inserita una risposta con un esempio, prova a compilarla. –