Makra

MP pozwala na używanie makr, podobnie jak FPC, z tym tylko wyjątkiem że makra zawsze są włączone.

 {$macro on}
 {$macro off}
 {$macro+}
 {$macro-} 

Dyrektywa {$macro on} jest wymagana przez FPC, w MP jest zachowana tylko w celu zgodności.

Definiowanie makra

{$define label := expression}

{$define label(par0, par1 ... par7) := expression}

Aby definicja została rozpoznana jako makro po nazwie etykiety i ewentualnej liście (par0..par7) parametrów musi wystąpić symbol przypisania :=.

{$define new_proc :=

procedure test;
begin

 writeln('ok');

end;
}


  new_proc


begin

 test;

end.
{$define sum_xi

 :=

 x:=x+i;
 }

begin

 sum_xi;

end;
{$define WIDTH := 80}
{$define LEN   :=   ( WIDTH + 10 )}

var a: byte;

begin

 a := len * 20;

end.

Makra z parametrami obsługiwane są przez MP ale nie przez FPC.

{$define SIGN_MASK := $8000}
{$define SIGNED_INF_VALUE(x) := ((x and SIGN_MASK) or $7C00)}

var a: byte = 11;

begin

 writeln( SIGNED_INF_VALUE(a shl 15) );

end.