Sdílet prostřednictvím


Makra (C/C++)

Úpravě před zpracováním rozbalí všechny řádky, které nejsou direktivy předprocesoru makra (řádky, které nemají # jako prvního znaku prázdného místa) a v části některých směrnic, které není vynechána jako součást podmíněné kompilace. "Podmíněné kompilace"směrnic umožňují testováním konstantní výraz potlačit kompilace částí zdrojového souboru nebo identifikátor určit bloky textu, které jsou předány kompilátor a bloky textu, které jsou odebrány ze zdrojového souboru při úpravě před zpracováním.

#define Směrnice se obvykle používá k smysluplné identifikátory přidružit konstanty, klíčová slova a běžně používané příkazy nebo výrazy.Identifikátory, které představují konstanty jsou někdy označovány jako "Symbolické konstanty" nebo "manifest konstanty." Identifikátory, které představují prohlášení nebo výrazy se nazývají "makra." V této dokumentaci preprocesoru se používá pouze termín "makro".

Rozpoznané název makra v programu zdrojový text nebo argumenty určité příkazy preprocesoru je považována za volání makra.Název makra se nahrazuje kopie textu makra.Pokud makro přijímá argumenty, jsou formální parametry v těle makro nahrazeno skutečné argumenty za názvem makra.Proces nahrazení volání makra zpracovaných kopie textu se nazývá "rozšíření" volání makra.

Praktické podmínky jsou dva typy maker. "Makra jako objekt"přijmout žádné argumenty, že"podobné funkce"makra můžete definovat přijmout argumenty, takže vypadají a fungují jako volání funkce.Protože makra negenerují volání skutečné funkce, někdy můžete provádět programy rychleji nahrazením volání funkce makra.(V jazyce C++ vložené funkce jsou často upřednostňovanou metodou). Pokud není definovat a používat s péči však makra můžete vytvořit problémy.Pravděpodobně pomocí závorek definice maker s argumenty zachovat řádné přednost ve výrazu.Také makra nezpracovává správně výrazy s vedlejší účinky.Najdete getrandom příklad v # definovat směrnice Další informace.

Po definování makra ji nelze předefinovat na jinou hodnotu bez první odebrání původní definice.Můžete však předefinovat makro s stejnou definici.Stejné definice tedy může objevit více než jednou v programu.

#Undef směrnice odstraní definici makra.Po odebrání definice můžete předefinovat makro na jinou hodnotu.# Define směrnice a #undef směrnice diskutovat #define a #undef směrnic, resp..

Další informace naleznete v tématu,

Viz také

Další zdroje

C/C++-Reference preprocesoru