Erlang - Macros

Les macros sont généralement utilisées pour les remplacements de code en ligne. Dans Erlang, les macros sont définies via les instructions suivantes.

  • -define (constante, remplacement).
  • -define (Func (Var1, Var2, .., Var), Replacement).

Voici un exemple de macros utilisant la première syntaxe -

Exemple

-module(helloworld). 
-export([start/0]). 
-define(a,1). 

start() -> 
   io:fwrite("~w",[?a]).

À partir du programme ci-dessus, vous pouvez voir que la macro est développée en utilisant le '?' symbole. La constante est remplacée en place par la valeur définie dans la macro.

La sortie du programme ci-dessus sera -

Production

1

Voici un exemple de macro utilisant la classe de fonctions:

Exemple

-module(helloworld). 
-export([start/0]). 
-define(macro1(X,Y),{X+Y}). 

start() ->
   io:fwrite("~w",[?macro1(1,2)]).

La sortie du programme ci-dessus sera -

Production

{3}

Les instructions supplémentaires suivantes sont disponibles pour les macros -

  • undef(Macro)- Annule la définition de la macro; après cela, vous ne pouvez pas appeler la macro.

  • ifdef(Macro) - Evalue les lignes suivantes uniquement si la macro a été définie.

  • ifndef(Macro) - Evalue les lignes suivantes uniquement si Macro n'est pas définie.

  • else- Autorisé après une instruction ifdef ou ifndef. Si la condition était fausse, les instructions suivantes else sont évaluées.

  • endif - Marque la fin d'une instruction ifdef ou ifndef.

Lorsque vous utilisez les instructions ci-dessus, il doit être utilisé de la manière appropriée, comme indiqué dans le programme suivant.

-ifdef(<FlagName>).

-define(...).
-else.
-define(...).
-endif.