se dichiare faiFunzioneX come costante, allora il compilatore dovrebbe essere abbastanza intelligente da capire che la funziona non la chiami mai e quindi non compilartela.
Non serve a nulla dichiararla come costante, viene sempre compilata, non viene compilata, indipendentemente da come l'ha dichiarata, se la funzione non viene mai chiamata all'interno del programma.
Però la compilazione condizionale esiste proprio per consentire di compilare determinate parti di codice in funzione della dichiarazione di un certo alias, si molto per programmi che devono gestire diverse situazioni hardware che sono installate come opzioni, cioè non è detto che siano presenti, in modo da dire al compilatore quali funzioni utilizzare in funzione della configurazione del sistema.
Un buon esempio dell'uso compilazione condizionale è MultiWii dove ne viene fatto un largo uso per via della varietà di hardware utilizzato e mantenere le dimensioni del programma contenute, inutile compilare funzioni che non servono a nulla perché manca l'hardware che devono gestire.
Diverso è il caso di software che deve gestire varie configurazioni a seconda di un setup utente, tipicamente dei valori posti nella EEPROM, in questo caso le funzioni devono essere tutte presenti e viene scelta quale usare tramite una serie di if/switch in funzione delle opzioni utente.