预处理指令是c语言支持的一种特殊指令,它们以#做开头,不以;做结尾。预处理指令在编译的第一个阶段被处理,所有预处理指令都是把程序变成另外的样子,宏和变量在计算机里的处理方式完全不同。
gcc可以使用-E选项单独处理所有预处理指令。
1 define定义宏
“#define”是一个预处理指令,这个预处理指令用来定义宏,宏定义可以给数字起名称。
定义宏时不要使用=和; 宏名称中不应该有空格
可以在gcc命令行中使用-D选项定义宏
可以定义使用参数的宏,宏的参数都没有数据类型,也没有形参和实参的区别,宏的参数个数任意,宏的参数不一定代表一个数字。不要用自增或自减的计算结果作为宏的参数。
宏没有返回值变量
宏只能使用三目运算符完成复杂的计算
编写宏的时候应该在每个代表数字的参数以及整个计算结果外边都加上括号。
#include <stdio.h>
#define MAX(n1,n2) n1 > n2 ? n1 : n2
#define HEX(n) n >= '0' && n <= '9' ? n - '0' : n - 'a' + 10
int main() {
printf("MAX(2, 8)是%d\n", MAX(2, 8));
printf("HEX(\'7\')是%d\n", HEX('7'));
printf("HEX(\'d\')是%d\n", HEX(