Hallo Alexander!
Ich habe mir mal so Deine letzten paar Postings angesehen und das Gefühl bekommen, daß Du Dir hier Deine Hausaufgaben (bzw. Übungen für die Uni?) lösen läßt. Das macht wenig Sinn, wenn Du die zugrundelegende Theorie nicht verstehst, und hier geht es fast ausschließlich um sehr grundlegende Dinge, wenn man C programmieren lernen will / soll. Nachdem ich Dich jetzt ausreichend geschulmeistert habe noch zu Deiner eigentlichen Frage:
Die Aufgabenstellung bezieht sich auf (wie Du richtig erkannt hast) die zweite Zeile
#define MINUS\_A\_PLUS\_B(a) -(a)+b
und die Zeile
c = MINUS\_A\_PLUS\_B(d);
Das Geheimnis ist, daß der Übersetzungsvorgang für ein C-Programm in mehrere Schritte einteilt, die grob Vorkompilieren (precompile), kompilieren und linken sind. Im ersten Schritt findet unter anderem eine reine Textersetzung statt, die an allen Stellen im Quellcode Textkonstanten (das was direkt hinter #define steht) deren „Langversion“ (das was hinter der Konstanten steht) einfügt. Weil das im Allgemeinen länger als der Name der Konstanten ist, nennt man das auch expandieren.
Für genauere Informationen, im speziellen bezüglich Parameterübergabe an solche Makros und unerwünschte Seiteneffekte solltest Du Dich noch mal mit Deinem Buchmaterial auseinandersetzen, insbesondere, weil solche Makros ebenso beliebt wie fehleranfällig sind.
Gruß,
TheBeast
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]