C 语言中函数的”缺陷”
实参和形参之间仅仅是值传递,因此,函数中无法直接改变实参。
函数”缺陷“的补充
- 宏是 C 语言中代码复用的补充方式
- 宏定义语法:#define MACRO(param) code_segment
- 宏使用语法:MARCRO(num);
1 |
|
宏可以直接改变传入的参数的值;
宏与函数的不同
- 宏不是函数,使用宏没有函数调用的过程(没有函数的跳转、函数体的执行、函数的返回)
- 函数调用先传递参数值,然后跳转指定函数体,最后返回
- 使用宏只是单纯”单纯复制粘贴“(也可以叫宏展开),然后替换参数
- 同一个宏,无论调用多少次,都执行相同的函数体代码
- 同一个宏,每次使用都会”复制粘贴“相同的代码
编译器组成简介
- 预处理模块:处理所有宏以及 # 开头的语句(复制粘贴替换)
- 编译模块:将 C 程序翻译成二进制程序
- 链接模块:将二进制程序组合成可执行程序
宏常量
#define NAME Value
- 预处理模块将代码中出现的 NAME 标识符替换为 Value
- 宏常量的本质就是字面量