宏定义的基本概念
● 预处理指令都是以#开头
● 预处理指令分为三种
1.宏定义
定义格式:#define 宏名 参数
2.条件编译
#if 条件语句
statement1;
#elif 条件语句
statement2;
#else
statement3;
#endif //条件编译结束必须加上此条语句,否则statement3
以下的所有语句都将默认为不编译
3.文件包含
● 预处理指令在代码翻译成0和1之前进行
● 预处理指令的位置是可以写的
● 预处理指令有自己的作用域
作用域:从编写指令的那一行开始移植到文件结束
● 宏名一般用大写或是以k开头,变量名一般用小写
代码练习(不带参数的宏)
1.带参数的宏定义效率比函数高;
2.宏定义为纯粹的文本替换,不会参与运算,所以在定义又参数的宏定义时,参数和结果都要带上小括号(如上)
使用宏定义遍历数组内各元素
#include <stdio.h>
#define count 5 //不带参数的宏
int main()
{
int i;
int age[count] ={10,84,621,61,24};
for(i =0;i <count;i++ ){
printf("age[%d] = %d
",i,age[i]);
}
return 0;
}
代码练习(带参数的宏)
不使用函数求出变量a + b的值
#include <stdio.h>
#define sum(v1,v2) v1+v2 使用宏定义
int main()
{
int a = 10;
int b = 20;
int c =sum(a,b);
printf("sum = %d
",c);
return 0;
}
条件编译
定义:一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件。
代码练习:
#include <stdio.h> #define A 10 int main() { #if (a ==10) printf("a = 10 "); #elif (a ==5) printf("a = 5 "); #else printf("a为其他值 "); #endif return 0; }