Makra i język C++
C++ zawiera nowe funkcje, z których niektóre zastępują te oferowane przez preprocesor ANSI C.Te nowe możliwości zwiększają bezpieczeństwo typów i przewidywalność języka:
W języku C++, obiekty zadeklarowane jako const mogą być używane w stałych wyrażeniach.Umożliwi to programom deklarować stałe, które mają typ i informacje o wartości i wyliczenia, które mogą być przeglądane symbolicznie z poziomu debugera.Za pomocą preprocesora dyrektywy #define definiowanie stałych nie jest tak dokładne.Magazyn nie jest przydzielany dla obiektów const, chyba że wyrażenie mające swój adres znajduje się w programie.
Możliwości funkcji wbudowanej C++ wypierają typ funkcji makr.Zalety przy użyciu wbudowanych funkcji przez makra są następujące:
Zabezpieczenie typów.Wbudowane funkcje są przedmiotem tego samego typu, sprawdzeni jak normalne funkcje.Makra nie są typu bezpiecznego.
Poprawna obsługa argumentów, które mają skutki uboczne.Wbudowane funkcje oceniają wyrażenia, podane jako argumenty przed wprowadzeniem treści funkcji.W związku z tym nie ma żadnych szans, że wyrażenie z efektami ubocznymi będzie niebezpieczne.
Aby uzyskać więcej informacji dotyczących funkcji wbudowanej, zobacz inline, __inline, __forceinline.
W celu zapewnienia zgodności z poprzednimi wersjami wszystkich udogodnień preprocesora, które istniały w ANSI C i wcześniejszych specyfikacjach C++ są zachowywane dla Microsoft C++.