- 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 - 网络编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用的资源
- Erlang - 讨论
Erlang - 宏
宏通常用于内联代码替换。在 Erlang 中,宏是通过以下语句定义的。
- -定义(常量,替换)。
- -define(Func(Var1, Var2,.., Var), 替换)。
以下是使用第一种语法的宏示例 -
例子
-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) - 仅当 Macro 未定义时才评估以下行。
else - 在 ifdef 或 ifndef 语句之后允许。如果条件为假,则评估 else 后面的语句。
endif - 标记 ifdef 或 ifndef 语句的结束。
使用上述语句时,应按照以下程序所示正确使用。
-ifdef(<FlagName>). -define(...). -else. -define(...). -endif.