- Erlang 教程
- Erlang - 首頁
- Erlang - 概述
- Erlang - 環境
- Erlang - 基本語法
- Erlang - Shell
- Erlang - 資料型別
- Erlang - 變數
- Erlang - 運算子
- Erlang - 迴圈
- Erlang - 決策
- Erlang - 函式
- Erlang - 模組
- Erlang - 遞迴
- Erlang - 數字
- Erlang - 字串
- Erlang - 列表
- Erlang - 檔案 I/O
- Erlang - 原子
- Erlang - 對映
- Erlang - 元組
- Erlang - 記錄
- Erlang - 異常
- Erlang - 宏
- Erlang - 標頭檔案
- Erlang - 預處理器
- Erlang - 模式匹配
- Erlang - 保護條件
- Erlang - BIFS
- Erlang - 二進位制
- Erlang - 函式
- Erlang - 程序
- Erlang - 郵件
- Erlang - 資料庫
- Erlang - 埠
- Erlang - 分散式程式設計
- Erlang - OTP
- Erlang - 併發
- Erlang - 效能
- Erlang - 驅動程式
- Erlang - Web程式設計
- Erlang 有用資源
- Erlang - 快速指南
- Erlang - 有用資源
- Erlang - 討論
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.
廣告