Skip to content

Commit e9c7a5a

Browse files
authored
Merge pull request #34 from yuhuoyingxiongniao/update-document-about-marcos
Update document about marcos
2 parents 2128690 + d9b5c35 commit e9c7a5a

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
## 宏的定义
2+
宏(简称“宏指令”)是指定某一输入序列如何被映射替换到输出序列规则或模式。将宏的实例化转换为特定序列的映射过程称为宏扩展。宏的功能通常作为软件应用程序的一部分由编程语言提供。
3+
宏用于将一系列计算指令作为单个程序语句提供给程序员,从而使编程任务不易出错。宏通常允许位置或关键字参数来指示汇编程序的根据操作系统、平台或其他因素来生成程序或程序套件。
4+
## 宏的分类
5+
1. 硬件宏例如鼠标和键盘宏
6+
2. 参数化的宏,这类宏往往由语言的宏构造,例如假设c语言的源文件中存在如下语句:
7+
8+
```c
9+
#define PI 3.14159
10+
```
11+
这个语句本身是一个语言的宏,但是任意位置使用 PI 时,PI对应的就是一个参数化的宏。
12+
13+
3. 文本宏,Latex的多数功能就是由这样的宏实现的
14+
4. 语言的宏,也叫典型的宏(typical macro)。不作特殊说明的话,本文档所指的宏都是这一种宏。
15+
语言的宏分为两种:词法宏和句法宏。词法宏是多数编译型语言所拥有的(例如C语言 C++),在词法标记级别工作的宏系统(例如前面所述的C预处理)无法可靠地保留词法结构。句法宏系统改为在抽象语法树级别工作,并保留原始程序的词法结构。句法宏一般出现在类Lisp系统中,因为该类语言通常拥有的S表达式语法方便句法宏的实现。句法宏的发展分为三个阶段:
16+
4.1. 早期的Lisp宏
17+
1963年,Timothy Hart提议在Lisp 1.5中加入宏
18+
4.2. 照应宏
19+
照应宏最早出现在保罗·格雷厄姆(Paul Graham)的《论Lisp》中,照应宏是一种非常流行的宏,一度主导了类Lisp语言的宏实现
20+
4.3. 卫生宏
21+
卫生宏是从R5RS开始引入的宏系统,明确重命名,句法关闭。也就是说安全性是它的主要改进,而非表达力。除Scheme之外的许多语言都实现了卫生宏或实现了部分卫生宏系统。这些语言包括Scala,Rust,Elixir,Julia,Dylan和Nemerle等。
22+
5. 应用软件的宏
23+
根据软件的定义,创建方法不同。最常见的是MS office提供的宏。
24+

0 commit comments

Comments
 (0)