Makra i język C++
Język C++ oferuje nowe możliwości, 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 wyrażeniach stałych. Umożliwia programom deklarowanie stałych, które mają informacje o typie i wartości. Mogą deklarować wyliczenia, które można wyświetlać symbolicznie za pomocą debugera. Jeśli używasz dyrektywy preprocesora#define
do definiowania stałych, nie jest tak precyzyjne, a nie bezpieczne dla typu. Magazyn nie jest przydzielany dlaconst
obiektu, chyba że program zawiera wyrażenie, które przyjmuje jego adres.Funkcje wbudowane języka C++ zastępują makra typu funkcji. Zalety korzystania z funkcji wbudowanych w makrach to:
Bezpieczeństwo typu. Funkcje wbudowane podlegają sprawdzaniu tego samego typu co normalne funkcje. Makra nie są bezpieczne.
Prawidłowa obsługa argumentów, które mają skutki uboczne. Funkcje wbudowane obliczają wyrażenia podane jako argumenty przed wprowadzeniem treści funkcji. W związku z tym nie ma szans, aby wyrażenie z efektami ubocznymi było niebezpieczne.
Aby uzyskać więcej informacji na temat funkcji wbudowanych, zobacz wbudowane, __inline, __forceinline.
W celu zapewnienia zgodności z poprzednimi wersjami wszystkie obiekty preprocesora, które istniały w języku ANSI C, a wcześniejsze specyfikacje języka C++ są zachowywane dla języka Microsoft C++.