Originariamente inviato da RooccoXXI
Comunque la direttiva #define, se non ricordo male, viene sconsigliata nel libro Effective C++: 50 Specific Ways to Improve Your Programs and Design (di Scott Meyers). Consigliava di utilizzare comunque const (come variabile globale, quindi fuori dal corpo di qualsiasi funzione) per definire delle costanti globali (non mi ricordo i motivi però!).
Il #define è una sostituzione di testo "forza bruta" attuata dal precompilatore; le "variabili" const invece sono direttive del linguaggio comprese dal compilatore ed integrate nel linguaggio, il che significa ad esempio che le costanti hanno uno scope, possono essere inizializzate in base a parametri di template, e così via.