Präprozessor schrieb:
Alleine dadurch, dass das Symbol in der Parameterliste des Makro definiert wird, findet bereits die Ersetzung statt? Manchmal ergibt der Präprozessor keinen Sinn, zumindest nicht für mich ,,,
Das ist auch nicht der Trick. Die hier relevante Regel ist, dass ein Makroargument nicht expandiert wird, wenn es als Argument von # oder ## benutzt wird, bevor # bzw. ## selber stattfinden. In meinem Code wird dieses Verhalten durch die Indirektion verhindert, denn normalerweise werden Makroargumente vor ihrer Nutzung vollständig ausgewertet. Also in CONCAT werden alle Argumente expandiert und dann in CONCAT_IMPL zusammengefügt.