
预处理命令 是在编译之前,由预处理程序进行处理的一组命 令。 预处理命令均以#开头,命令末尾无分号。 例如: #define PI 3.1415926 #include
预处理命令 是在编译之前,由预处理程序进行处理的一组命 令。 预处理命令均以#开头,命令末尾无分号。 例如: #define PI 3.1415926 #include

不带参数的宏定义 格式:#define宏名替换文本 例如: #define PI 3.1415926 功能:系统进行预处理时,将用替换文本替换程 序中的所有宏名(字符串中的宏名除外)
格式:#define 宏名 替换文本 例如: #define PI 3.1415926 功能:系统进行预处理时,将用替换文本替换程 序中的所有宏名(字符串中的宏名除外) 。 不带参数的宏定义

【例】宏定义举例。 #include #define PI 3.14159 mainO float s,r,v; scanf("%f",&r); S=PI*r*r; v=4.0/3*PI*r*r*r; printf("s=%f,v=%fn",s,v);
【例】宏定义举例。 #include #define PI 3.14159 main() {float s,r,v; scanf("%f",&r); s=PI*r*r; v=4.0/3*PI*r*r*r; printf("s=%f,v=%f\n",s,v); }

带参数的宏定义 格式:#define宏名形参表)替换文本 例如: #define S(x,y)x*y 功能:先用替换文本替换程序中的宏名,再用实 参替换形参
格式:#define 宏名(形参表) 替换文本 例如: #define S(x,y) x*y 功能:先用替换文本替换程序中的宏名,再用实 参替换形参。 带参数的宏定义

注意: 宏替换是一种机械死板的替换,不能在替 换文本中随意添加括号
注意: 宏替换是一种机械死板的替换,不能在替 换文本中随意添加括号

#include #define S(x,y)x*y main() int a,b,c; a=20; b=10; c=S(a+b,a-b); printf("c=%d n",c); 替换过程为: S(a+b,a-b)→x*y→a+b*a-b →20+10*20-10→210
#include #define S(x,y) x*y main( ) {int a,b,c; a=20; b=10; c=S(a+b,a-b); printf("c=%d\n",c); } 替换过程为: S(a+b,a-b)→x*y → a+b*a-b →20+10*20-10 →210

故应将每个形参及整个替换文本用圆括号括起来。 #include #define S(x,y)((x)*(y)) main() int a,b,c; a=20; b=10; c=S(a+b,a-b); printf("c=%d n",c);
故应将每个形参及整个替换文本用圆括号括起来。 #include #define S(x,y) ((x)*(y)) main( ) {int a,b,c; a=20; b=10; c=S(a+b,a-b); printf("c=%d\n",c); }

文件包含命令 格式:#include 或 #include"文件名" 功能: 系统预处理时,将用被包含文件的内容取 代该includei命令。 例如: #include
文件包含命令 格式: #include 或 #include "文件名" 功能: 系统预处理时,将用被包含文件的内容取 代该include命令 。 例如 : #include

注意: 一个includei命令只能指定一个被包含文件
注意: 一个include命令只能指定一个被包含文件