Wenn fertig, bitte Fenster schließen
Die dritte und letzte Form der #define-Anweisung definiert ein Makro. Ein Makro ist im Prinzip nichts anderes als eine Kurzschreibweise für beliebige C++ Anweisungen. Trifft der Präprozessor auf ein solches Makro, so wird dieses durch die bei der Makrodefinition angegebenen Anweisungen ersetzt. Erstrecken Sie sich die Anweisungen eines Makros über mehrere Zeilen, so sind die Zeilen mit einem Backslash-Zeichen abzuschließen.
|
// Makro-Definition #define CHECK_ERROR \ if (error != 0) \ { cout << "Fehler!"; exit(error); } // Im Programm dann ... CHECK_ERROR // Wird ersetzt durch // if (error != 0) // { cout <<"Fehler"; exit(error); } |
|
|
Außer dieser einfachen Makro Definitionen können Makros auch Parameter besitzen. Die Parameter werden hier, genauso wie bei Funktionen, in Klammern eingeschlossen und mehrere Parameter werden durch Komma voneinander getrennt. Beachten Sie bitte, dass hier nur die Parameternamen stehen und keine Datentypen wie bei Funktionen, da die #define-Anweisung vom Präprozessor verarbeitet wird und nicht vom Compiler!
|
// Makro-Definition #define CAREA1(rad) 3.14/4.0*(rad)*(rad) // Das gleiche Makro, nur andere Schreibweise #define CAREA2(rad) 3.14/4.0*rad*rad // main() Funktion int main () { double erg; // Variable für Ergebnis double val; // 'Parameter' ... // Folgende Anweisung erg = CAREA1(val+2.); // wird erweitert zu: // erg = 3.14/4.0*(val+2.)*(val+2.); // Folgende Anweisung erg = CAREA2(val+2.); // wird erweitert zu: // erg = 3.14/4.0*val+2.*val+2.; // (Punkt- vor Strichrechnung!) } |
|
|