Freigeben über


Makros und C++

C++ bietet neue Funktionen, von denen einige die Funktionen ablösen, die vom ANSI-C-Präprozessor bereitgestellt werden. Diese neuen Funktionen erweitern die Typsicherheit und die Voraussagbarkeit der Sprache:

  • In C++ können Objekte, die als const deklariert sind, in konstanten Ausdrücken verwendet werden. Dadurch können Programme Konstanten deklarieren, die Typ- und Wertinformationen haben, und Enumerationen, die mit dem Debugger symbolisch angezeigt werden können. Die Verwendung der #define-Präprozessordirektive zum Definieren von Konstanten ist weniger genau. Einem const-Objekt wird kein Speicherplatz zugeordnet, es sei denn, dass ein Ausdruck im Programm gefunden wird, der die Adresse akzeptiert.

  • 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 werten vor dem Eintreten in den Funktionstext die Ausdrücke aus, die als Argumente bereitgestellt werden. Daher ist es nicht möglich, dass ein Ausdruck mit Nebeneffekten 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.

Siehe auch

Referenz

Vordefinierte Makros

Makros (C/C++)