Udostępnij za pośrednictwem


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 dla const 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++.

Zobacz też

Wstępnie zdefiniowane makra
Makra (C/C++)