宏定义的基本概念
● 预处理指令都是以#开头
● 预处理指令分为三种
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\n",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\n",c); return 0; }
条件编译
定义:一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件。
代码练习:
#include <stdio.h> #define A 10 int main() { #if (a ==10) printf("a = 10\n"); #elif (a ==5) printf("a = 5\n"); #else printf("a为其他值\n"); #endif return 0; }
时间: 2024-10-18 19:42:27