宏定义
0.前言
- 本文章的程序是在linux下测试通过的
本文的分析通过了下面的命令来查看预编译结果
gcc -E filename.c -o filename.i
这条命令的作用是生成预处理文件filename.i
gcc -S filename.c -o filename.s
这条命令的作用是生成预编译文件filename.s
gcc -c filename.c -o filename.o
这条命令的作用是生成汇编文件filename.s
1.宏定义的特点
1.#define表达式给有函数调用的假象,却不是函数
2.#define表达式可以比函数更强大
3.#define表达式比函数更容易出错
2.宏定义函数
#define SWAP(a, b) \
{ \
int temp = a; \
a = b; \
b = temp; \
}
上面的语句会对变量直接进行覆盖
函数不是真正意义上的交换,只是复制了一份
3.宏定义表达式
- 与函数的对比
1.在于编译器被处理,编译器不知道宏表达式的存在
2.用“实参”完全替代形参,不进行任何计算
3.没有任何“调用”的开销
4.不能出现递归定义