Erlang - 宏
宏通常用于内联代码替换。 在 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 语句之后使用。 如果条件为 false,则评估 else 后面的语句。
endif − 标记 ifdef 或 ifndef 语句的结束。
使用上述语句时,应按照以下程序所示正确使用。
-ifdef(<FlagName>). -define(...). -else. -define(...). -endif.