Den char Befehl kenne ich nicht und weis auch nicht was er bewirkt.
char ist kein befehl, sondern eine deklaration einer variable vom TYP character (8bit groß)

was meinst du mit "benötigt keine werte" ???

PollSwitch() ist eine funktion die einen wert zurückliefert, der über das gleichheitszeichen den variablen t1 und t2 zugewiesen wird!

die defines für k5 und k6 stehen doch oben unter dem #include

t1 und t2 sind im übrigen variablen, d.h. zur laufzeit des programms können sie viele interschiedliche werte annehmen ...

mit deinen defines für k6 usw. erzeugst du eine temporäre variabel, du rufst die funktion pollswitch auf, die funktion liefert einen wert zurück, der prozessor merkt sich den wert in einer temporären variable und vergleicht dann diese variable mit der zahl, die du hinter dem vergleich geschrieben hast ... deine lösung ist zu aufwändig, da immer wieder die funktion pollswitch benutz wird, radbruchs lösung hingegen ruft den wert ab, speichert ihn in einer definierten variable und vergleicht den wert der variable mit dem wert der im define steht

#define wird vom so genannten pre-compiler verarbeitet, bevor aus deinem programm ein maschienencode für den asuro wird, geht er über den gesamten text, sucht nach der zeichenkette "k6" zum beispiel und ersetzt diese durch die zeichenkette "PollSwitch()==1" in deinem beispiel