Nehmen wir an, wir folgendes zu der gcc
‚s Präprozessor übergeben:Aufruf eines funktionsähnlichen Makros ohne Klammern?
#define REM(...) __VA_ARGS__
#define PAIR(x) REM x
PAIR((a)b)
Es erweitert PAIR((a)b)
in a b
. Wie kommt es dazu? Ich bin verwirrt über REM
ohne Klammern verwendet und x
nicht Echo wird wie ...
Nach dem Ersetzen von 'PAIR ((a) b)' durch 'REM (a) b' geht der Präprozessor zum Anfang des ersetzten Textes zurück und scannt ihn als Folge von Token erneut. Ganz schön offensichtlich. –