Mit #define legst du etwas für den Compiler fest. Das ist nur ein Alias. Der Compiler _ersetzt_ die Konstante.
Code:
#define BLUBB  5
mach_etwas_mit_der_zahl(BLUBB);
// ist für den Compiler wie
mach_etwas_mit_der_zahl(5);
BLUBB = 5; // Ergäbe
5 = 5; // Fehler denke ich
const typ bla dagegen erzeugt mehr oder weniger wirklich die Variable bla mit dem Wert 5, bloß das der Wert nirgens mehr verändert werden kann..
Code:
const int BLUBB = 5;
mach_etwas_mit_der_zahl(BLUBB);
// ist für den Compiler wie
mach_etwas_mit_der_zahl(BLUBB);
BLUBB = 5; // Ergäbe wirklich BLUBB = 5, würde aber einen Fehler verursachen, da du versuchst eine Konstante zu beschreiben.