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 語句之後使用。如果條件為假,則評估 else 之後的語句。

  • endif - 標記 ifdef 或 ifndef 語句的結束。

使用上述語句時,應按照以下程式所示的方式正確使用它們。

-ifdef(<FlagName>).

-define(...).
-else.
-define(...).
-endif.
廣告
© . All rights reserved.