Weil Werte die mittels "define" definiert werden VOR dem eigentlichen compilieren durch den Präprozessor ersetzt werden. Das ist eine reine Textersetzung, die schon im Quellcode stattfindet. Daher bekommt der Compiler am Ende nur einen einzigen String.