Макросы обычно используются для замены встроенного кода. В Erlang макросы определяются с помощью следующих операторов.
- -определение (константа, замена).
- -define (Func (Var1, Var2, .., Var), Замена).
Ниже приведен пример макросов, использующих первый синтаксис:
пример
-module(helloworld). -export([start/0]). -define(a,1). start() -> io:fwrite("~w",[?a]).
Из приведенной выше программы вы можете увидеть, что макрос расширяется с помощью ‘?’ условное обозначение. Константа заменяется на месте значением, определенным в макросе.
Выход вышеупомянутой программы будет —
Выход
1
Пример макроса, использующего класс функции, выглядит следующим образом:
пример
-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.
При использовании приведенных выше утверждений его следует использовать надлежащим образом, как показано в следующей программе.