Макросы обычно используются для замены встроенного кода. В Erlang макросы определяются с помощью следующих утверждений.
- -define (константа, замена).
- -define (Func (Var1, Var2, .., Var), замена).
Ниже приведен пример макросов с использованием первого синтаксиса -
-module(helloworld).
-export([start/0]).
-define(a,1).
start() ->
io:fwrite("~w",[?a]).
Из приведенной выше программы вы можете видеть, что макрос расширяется, используя '?' условное обозначение. Константа заменяется на место значением, определенным в макросе.
-module(helloworld).
-export([start/0]).
-define(macro1(X,Y),{X+Y}).
start() ->
io:fwrite("~w",[?macro1(1,2)]).
Для макросов доступны следующие дополнительные инструкции:
- undef (макро) - отменяет макрос; после этого вы не можете вызвать макрос.
- ifdef (Макро) - вычисляет следующие строки только в том случае, если макрос определен.
- ifndef (Макро) - вычисляет следующие строки только в том случае, если макрос не определен.
- else - Разрешено после оператора ifdef или ifndef. Если условие было ложным, выполняются следующие утверждения.
- endif - Помечает конец инструкции ifdef или ifndef.
При использовании вышеуказанных утверждений его следует использовать надлежащим образом, как показано в следующей программе.
-ifdef(<FlagName>).
-define(...).
-else.
-define(...).
-endif.
0 комментариев