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ělenoconst
žá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++.