Diciamo che abbiamo una base di codice che viene utilizzata per molti clienti diversi e che contiene un codice che è rilevante solo per i clienti di tipo X. È meglio usare le direttive del preprocessore per includere questo codice solo nel cliente di tipo X, oppure utilizzare se dichiarazioni? Per essere più chiari:
// some code
#if TYPE_X_COSTUMER = 1
// do some things
#endif
// rest of the code
o
if(TYPE_X_COSTUMER) {
// do some things
}
Gli argomenti a cui posso pensare sono:
- La direttiva del preprocessore comporta un ingombro ridotto del codice e meno rami (su compilatori non ottimizzati)
- Se le istruzioni risultano con codice che viene sempre compilato, ad esempio se qualcuno commetterà un errore che danneggerà il codice irrilevante per il progetto su cui lavora, l'errore verrà comunque visualizzato e non corromperà la base di codice. Altrimenti non sarà a conoscenza della corruzione.
- Mi è sempre stato detto di preferire l'uso del processore rispetto all'uso del preprocessore (se questo è un argomento a tutti ...)
Cosa è preferibile quando si parla di una base di codice per molti clienti diversi?
TYPE_X_CUSTOMER
ancora una macro preprocessore?