#include<stdio.h>
//宏定义,通常用于定义常量,在代码转换成二进制文件时会将代码中的宏名称替换成值
//#define 宏名称 值
#define A 1
//带参数的宏 fun(a,b)为宏的名称 a+b为宏的值
//带参数的宏比函数效率高
#define fun(a,b) a*b
//为了保证替换结果,最好加入()运算符
#define fun2(a,b) ((a)*(b))
/*
预处理指令有三种:
1.宏定义 (#define,#undef)
2.文件包含 (#include)
3.条件编译 (#if,#elif,#else,#endif)
注意:
1.预处理指令在代码转换成二进制文件0、1之前执行
2.预处理指令可在任意位置编写
3.预处理指令的作用域范围是从指令开始到文件结尾结束
*/
int main()
{
printf("%d\n",A);
//取消 宏定义A
#undef A
//printf("%d\n",A); 此行会报错,因为宏定义A已经被取消
//printf("%d\n",B); 此行会报错, 因为未找到宏定义B
#define B 2
printf("%d\n",B);
//函数声明
void printB();
printB();
printf("------------------------------\n");
//int r1=1+1*2+2*2 --- 7
int r1=fun(1+1,2+2)*2;
//int r2=((1+1)*(2+2))*2 --- 16
int r2=fun2(1+1,2+2)*2;
printf("r1=%d, r2=%d\n",r1,r2);
return 0;
}
void printB()
{
//使用main函数中定义的宏B
printf("printB()中的%d\n",B);
}
执行结果
1
2
printB()中的2
------------------------------
r1=7, r2=16