English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Макросы Erlang (Macros)

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

  • - define(Constant, Replacement).

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

Вот пример использования первого синтаксиса макросов:

Онлайн пример

-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) -Эти строки оцениваются только в том случае, если макр не определен.

  • else-Разрешается после ifdef или ifndef. Если условие ложно, оцениваются инструкции после else.

  • endif -Mark the end of ifdef или ifndef statements.

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

-ifdef(<FlagName>).
-define(...).
-else.
-define(...).
-endif.