Du magst damit Recht haben, dass der Code in beiden Fällen funktioniert und es sowohl dem Prozessor als auch dem Programmierer egal sein kann.

Will man aber solchen Code portieren bekommt man Probleme, wenn an allen Enden "char" steht (den Fall hatte ich erst kürzlich*g*) und man nicht sofort weiß ob 8 oder 16 bit benötigt werden.

Prinzipiell kann ich die Verwendung einer Headerdatei à la "types.h" empfehlen wo für die Zielplattform passend die Typen, z. B. uint16, uint32, uint8,... definiert sind. Das lässt sich dann ganz einfach austauschen.

Die Datentypen "char" und "int" werden übrigens nicht mit defines abgebildet, sondern compilerintern gehandhabt.