《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念

●  预处理指令都是以#开头

●  预处理指令分为三种

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;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。