宏通常用于內(nèi)聯(lián)代碼替換。在Erlang中,宏是通過以下語句定義的。
- define(Constant, Replacement)。
-define(Func(Var1, Var2,.., Var), Replacement).
以下是使用第一種語法的宏示例-
-module(helloworld). -export([start/0]). -define(a,1). start() -> io:fwrite("~w",[?a]).
從上面的程序中,您可以看到使用'?'擴(kuò)展了宏。象征。常量將替換為宏中定義的值。
上面程序的輸出將是-
輸出結(jié)果
1
使用函數(shù)類的宏的示例如下-
-module(helloworld). -export([start/0]). -define(macro1(X,Y),{X+Y}). start() -> io:fwrite("~w",[?macro1(1,2)]).
上面程序的輸出將是-
輸出結(jié)果
{3}
以下附加語句可用于宏-
undef(Macro)-未定義宏;此后,您將無法調(diào)用宏。
ifdef(Macro) ?僅在定義了宏的情況下才評(píng)估以下各行。
ifndef(Macro) ?僅當(dāng)未定義宏時(shí)才評(píng)估以下幾行。
else?在ifdef或ifndef語句之后允許。如果條件為假,則評(píng)估else后面的語句。
endif ?標(biāo)記ifdef或ifndef語句的結(jié)尾。
使用上述語句時(shí),應(yīng)按照以下程序中所示的正確方式使用它。
-ifdef(<FlagName>). -define(...). -else. -define(...). -endif.