No, cosi non va bene. Le direttive #ifdef sono risolte a tempo di compilazione, o meglio ancora prima della compilazione, durante la fase di preprocessing, ovvero la fase in cui gli header file vengono inclusi nel programa e tutto le macro vengono espanse, E' quindi prima della compilazione che il compilatore vede se è definita una macro piuttosto chel'altra inserendo nel programma solo il blocco corrispondente a quella macro. Dopodichè avviene la compilazione: quando il programma è compilato dell'altro blocco di codice non c'è piu traccia nel programma. A tempo di esecuzione ormai è già tutto deciso. La fase di preprocessing è sostanzialemnte una fase di sostituzione di parti di testo nel programma sorgente, e sul programma cosi trasformato avviene la compilazione.