Учебники

Эрланг — Макросы

Макросы обычно используются для замены встроенного кода. В Erlang макросы определяются с помощью следующих операторов.

  • -определение (константа, замена).
  • -define (Func (Var1, Var2, .., Var), Замена).

Ниже приведен пример макросов, использующих первый синтаксис:

пример

Live Demo

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

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

Из приведенной выше программы вы можете увидеть, что макрос расширяется с помощью ‘?’ условное обозначение. Константа заменяется на месте значением, определенным в макросе.

Выход вышеупомянутой программы будет —

Выход

1

Пример макроса, использующего класс функции, выглядит следующим образом:

пример

Live Demo

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

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

Выход вышеупомянутой программы будет —

Выход

{3}

Следующие дополнительные операторы доступны для макросов:

  • undef (Macro) — отменяет определение макроса; после этого вы не можете вызвать макрос.

  • ifdef (Macro)оценивает следующие строки, только если макрос был определен.

  • ifndef (Macro) — оценивает следующие строки, только если Macro не определен.

  • else — разрешено после операторов ifdef или ifndef. Если условие было ложным, операторы, следующие за другим, оцениваются.

  • endif — отмечает конец оператора ifdef или ifndef.

undef (Macro) — отменяет определение макроса; после этого вы не можете вызвать макрос.

ifdef (Macro)оценивает следующие строки, только если макрос был определен.

ifndef (Macro) — оценивает следующие строки, только если Macro не определен.

else — разрешено после операторов ifdef или ifndef. Если условие было ложным, операторы, следующие за другим, оцениваются.

endif — отмечает конец оператора ifdef или ifndef.

При использовании приведенных выше утверждений его следует использовать надлежащим образом, как показано в следующей программе.