Sdílet prostřednictvím


Makra a jazyk C++

C++ nabízí nové funkce, z nichž některé nahrazují ty, které nabízí preprocesor ANSI C. Tyto nové možnosti zvyšují bezpečnost typů a předvídatelnost jazyka:

  • V jazyce C++ se objekty deklarované jako const dají použít ve výrazech konstant. Umožňuje programům deklarovat konstanty, které mají informace o typu a hodnotě. Mohou deklarovat výčty, které lze zobrazit symbolicky pomocí ladicího programu. Při použití direktivy preprocesoru #define k definování konstant není tak přesné a není typově bezpečné. Pro objekt není přiděleno const žádné úložiště, pokud program neobsahuje výraz, který přebírá jeho adresu.

  • Schopnost vložených funkcí jazyka C++ nahrazuje makra typů funkce. Výhody použití vložených funkcí oproti makrům jsou:

    • Bezpečnost typů. Vložené funkce jsou kontrolovány stejně jako normální funkce. Makra nejsou typově bezpečná.

    • Správná manipulace s argumenty, které mají vedlejší účinky. Vložené funkce vyhodnocují výrazy zadané jako argumenty před zadáním textu funkce. Proto není možné, aby výraz s vedlejšími účinky byl nebezpečný.

Další informace o vložených funkcích najdete v textu __inline __forceinline.

Z důvodu zpětné kompatibility jsou v jazyce C++ společnosti Microsoft zachovány všechny funkce preprocesoru, které existovaly ve standardu ANSI C a starších specifikacích jazyka C++.

Viz také

Předdefinovaná makra
Makra (C/C++)