C/C++中的预处理主要包含四种:文件包含、宏定义、条件编译、一些特殊的预定义宏
1.文件包含
“文件包含处理”是指一个源文件可以将另外一个文件的全部内容包含进来。C语言提供了#include命令用来实现“文件包含”的操作。
#include< > 与 #include ""的区别:
(1)"" 表示系统先在.c文件所在目录去搜索包含的.h文件,比如我们的要写的范例,在main.c所在的当前目录找test1.h,如果找不到,再按系统指定的目录检索。#include ""常用于包含自定义的头文件。如果用#include<>也能找到,但增加了编译时间
(2)< > 表示系统直接按系统指定的目录检索。#include <>常用于包含库函数的头文件,如果用#include""也能找到,但增加了编译时间
注意:
(1)不按常规使用也能找到,但会让编译效率下降,所以应该按照上述建议使用
(2)理论上#include可以包含任意格式的文件(.c .h等) ,但我们一般用于头文件的包含。
2.宏定义
(1)无参数的宏
格式:#define 宏名 一段符号
这里所说的一段符号,可以是数字,可以是字符,可以是字符串,可以是表达式,也可以为空,等等,具体是什么要根据你实际需求来确定。
示例:#define PI 3.141926
在编译预处理时,将程序中在该语句以后出现的所有的PI都用3.1415926代替。这种方法使用户能以一个简单的名字代替一段长的符号,
《1》在预编译时将宏名替换成一段符号的过程称为“宏展开”。
示例:
#include <stdio.h>
#define PI 3.14 // 3.141926
#define TEACHER "Martin老师"
void test1_1()
{
// 圆面积公式,面积 = 圆周率*半径的平方
double radius = 10.0;
double area = PI * radius * radius;
printf("test1_1 %s教我算圆面积,圆半径 = %lf, 圆面积 = %lf\n",
TEACHER, radius, area);
}
//宏定义的展开后的结果
void test1_2()
{
// 圆面积公式,面积 = 圆周率*半径的平方
double radius = 10.0;
d