◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
编译预处理是C/C++编译系统的一个组成部分。它告诉编译系统在对源程序进行编译之前应该做些什么。这类命令称为编译预处理命令。
编译预处理命令有三种:宏定义,文件包含和条件编译。在此我只介绍最简单的无参宏定义和文件包含。
无参数宏定义
无参数宏定义是最简单、最常用的编译预处理命令,它是用一个指定的的标识符来代表一个字符串,该标识符称为宏名,被定义的字符串成为替换文本,其格式为:
#define <宏名><字符串>
【例1.3】
#define PI 3.1415926
#define F "r=%f,area=%.2f"
#define EPS 1.0e-0.5
一个标识符被定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,当程序被编译时,先将宏名用被定义的字符串替换,这称为宏展开,替换后才进行编译。
【例1.4】分析下列程序被替换后的结果。
#define PI 3.1415926
#define R 4.0
#define F "r=%f,area=%.2f"
main()
{
float area;
area=PI*R*R;
printf(F,R,area)
}
经过预处理后,main函数被展开为如下形式:
main()
{
float area;
area=3.1415926*4.0*4.0
printf=("r=%f,area=%.2f",4.0,area)
}
说明:
【例1.5】宏定义的嵌套
#define PI 3.1415926
#define R 4.0
#define AREA PI*R*R
#define F "r=%f,area=%.2f"
main()
{
printf(F,R,AREA);
}
经过预处理后,main函数将被替换为:
main()
{
printf("r=%f,area=%.2f",4.0,3.1415926*4.0*4.0);
}
运行结果为:r=1.000000,area=50.27
文件包含
关于文件包含,我将在下次文章中讲解。敬请关注。