Unterschied Varible und Define

Hier eine echte Anfängerfrage: was ist der Unterschied zwischen einer Variable und dem define Befehl? Bei define wird einem Wort ein bestimmter Wert zugewiesen. immer wenn das Programm den Namen ließt setzt es den Wert ein. Eine Variable macht doch genau dasselbe oder?

Nein. Das ist etwas völlig anderes. #define ist ein Makro. Makros sind Text-Ersetzungen auf Token Basis die noch vor dem Kompilieren gemacht werden: http://de.wikipedia.org/wiki/C-Präprozessor

Wenn du das machst

define LED 1

Wird das Token "LED" im Text durch "1" ersetzt. Deshalb muss man damit vorsichtig sein. Er ersetzt das Wort "LED" nämlich auch z.B. in String-Konstanten. Das kann bei komplizierten Makros zu schwer zu diagnostizierenden Fehlern führen.

Heutzutage ist es da meistens besser man verwendet richtige Variablen und deklariert sie als "const". Dann ist der Compiler i.d.R. dazu in der Lage diese genauso wegzuoptimieren.

Vielen Dank