Se usi #define stai facendo sostituzione di testo con testo, quindi non puoi modificare il valore (tanto é vero che puoi anche definire macro che chiamano funzioni, o che sono intere funzioni) Se la #define non é presente il programma crede che tu stia usando una variabile indichiarata e da errore di compilazione. Se vuoi che l'utente modifichi numeri crea apposite variabili