Makros und C++
C++ bietet neue Funktionen, von denen einige die vom ANSI C-Präprozessor angebotenen ersetzen. Diese neuen Funktionen erweitern die Typsicherheit und die Voraussagbarkeit der Sprache:
In C++ deklarierte Objekte, die
const
in Konstantenausdrücken verwendet werden können. Es ermöglicht Programmen, Konstanten mit Typ- und Wertinformationen zu deklarieren. Sie können Enumerationen deklarieren, die mit dem Debugger symbolisch angezeigt werden können. Wenn Sie die Präprozessordirektive#define
zum Definieren von Konstanten verwenden, ist sie nicht so präzise und nicht typsicher. Es wird kein Speicher für einconst
Objekt zugewiesen, es sei denn, das Programm enthält einen Ausdruck, der seine Adresse annimmt.Funktionstypmakros werden von der C++-Inlinefunktion abgelöst. Im Vergleich zu Makros haben Inlinefunktionen folgende Vorteile:
Typsicherheit. Inlinefunktionen unterliegen derselben Typüberprüfung wie normale Funktionen. Makros sind nicht typsicher.
Korrekte Behandlung von Argumenten, die Nebeneffekte haben. Inlinefunktionen bewerten die als Argumente bereitgestellten Ausdrücke, bevor der Funktionstext eingegeben wird. Daher besteht keine Chance, dass ein Ausdruck mit Nebenwirkungen unsicher ist.
Weitere Informationen zu Inlinefunktionen finden Sie unter inline, __inline, __forceinline.
Aus Gründen der Abwärtskompatibilität werden alle Präprozessorfunktionen, die in ANSI C und in früheren C++-Spezifikationen vorhanden sind, für Microsoft C++ beibehalten.