宏通常用于内联代码替换。在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 ?标记ifdef或ifndef语句的结尾。
使用上述语句时,应按照以下程序中所示的正确方式使用它。
-ifdef(<FlagName>). -define(...). -else. -define(...). -endif.