English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Макросы обычно используются для замены кода 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.