宏通常用于內(nèi)聯(lián)代碼替換。在Erlang中,宏是通過(guò)以下語(yǔ)句定義的。
- define(Constant, Replacement)。
-define(Func(Var1, Var2,.., Var), Replacement).
以下是使用第一種語(yǔ)法的宏示例-
-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}以下附加語(yǔ)句可用于宏-
undef(Macro)-未定義宏;此后,您將無(wú)法調(diào)用宏。
ifdef(Macro) ?僅在定義了宏的情況下才評(píng)估以下各行。
ifndef(Macro) ?僅當(dāng)未定義宏時(shí)才評(píng)估以下幾行。
else?在ifdef或ifndef語(yǔ)句之后允許。如果條件為假,則評(píng)估else后面的語(yǔ)句。
endif ?標(biāo)記ifdef或ifndef語(yǔ)句的結(jié)尾。
使用上述語(yǔ)句時(shí),應(yīng)按照以下程序中所示的正確方式使用它。
-ifdef(<FlagName>). -define(...). -else. -define(...). -endif.