预处理命令 预处理命令不是C程序本身的组成部 分,不能直接对其进行编译 般是在程序编译之前,根据预处理 命令对程序进行相应的处理,然后再将 处理后的程序进行编译 例如:# define n10为预处理命令,在 程序编译之前,将所有程序中出现N的 地方全部变成10之后,再进行编译
预处理命令 • 预处理命令不是C程序本身的组成部 分,不能直接对其进行编译。 一般是在程序编译之前,根据预处理 命令对程序进行相应的处理,然后再将 处理后的程序进行编译 例如:#define N 10为预处理命令,在 程序编译之前,将所有程序中出现N的 地方全部变成10之后,再进行编译
预处理命令 二·C语言提供的预处理功能主要有三种 1宏定义:用宏定义命令来实现 2文件包含:用文件包含命令来实现 3.条件编译:用条件编译命令来实现 般地,预处理命令是以符号“#” 开头的
预处理命令 • C语言提供的预处理功能主要有三种 1.宏定义:用宏定义命令来实现 2.文件包含:用文件包含命令来实现 3.条件编译:用条件编译命令来实现 一般地,预处理命令是以符号“#” 开头的
预处理命令 宏定义 一、不带参数的宏定义 用一个指定的标识符号来代表一个 字符串 格式: # define标识符号字符串 在预编译处理时,将程序中所有的 标识符用字符串代替,其中标识符也称 为宏名,替换过程成为宏展开
预处理命令 • 宏定义 一、不带参数的宏定义 用一个指定的标识符号来代表一个 字符串 格式: #define 标识符号 字符串 在预编译处理时,将程序中所有的 标识符用字符串代替,其中标识符也称 为宏名,替换过程成为宏展开
预处理命令(程序一) #include ●# include #define n3. 14 main float rresult printf("请输入圆的半径:m") e scanf(" %of, &r) esult=n r*r printf("圆的面积是:%3fn" result ● system(" pause")
预处理命令(程序一) #include #include #define N 3.14 main() { float r,result; printf("请输入圆的半径:\n"); scanf("%f",&r); result=N*r*r; printf("圆的面积是:%3f\n",result); system("pause"); }
预处理命令 ·关于不带参数的宏定义的说明: 1宏名一般用大写字母表示,也可用小 写字母表示。但是如果宏名用的是大 (小)写字母,则程序中使用宏名时也 必须是对应的大(小)写字母 2程序中多处出现相同的字符串或者是 变量,则可以使用宏名,这样不容易出 错,并且程序修改也方便
预处理命令 • 关于不带参数的宏定义的说明: 1.宏名一般用大写字母表示,也可用小 写字母表示。但是如果宏名用的是大 (小)写字母,则程序中使用宏名时也 必须是对应的大(小)写字母 2.程序中多处出现相同的字符串或者是 变量,则可以使用宏名,这样不容易出 错,并且程序修改也方便
预处理命令 3宏定义仅仅做简单的字符串替换,不做 正确性检査 例如:# define n3;14 定义中将小数点写成了分号,但预 定义处理时,仍然会将内容带入,而不 做错误检查 4宏定义不是C语句,所以定义行末尾不 需要加分号
预处理命令 3.宏定义仅仅做简单的字符串替换,不做 正确性检查。 例如:#define N 3;14 定义中将小数点写成了分号,但预 定义处理时,仍然会将内容带入,而不 做错误检查 4.宏定义不是C语句,所以定义行末尾不 需要加分号
预处理命令 5.# define命令出现在函数的外面,其 作用范围是从定义处到源文件结束处 6.可以用# undef命令来终止宏定义的作用 域 7宏定义可以层层置换 例如:# define r5 #define n3. 1 4 井 define sn*r*r
预处理命令 5. #define 命令出现在函数的外面,其 作用范围是从定义处到源文件结束处 6.可以用#undef命令来终止宏定义的作用 域 7.宏定义可以层层置换 例如:#define r 5 #define N 3.14 #define s N*r*r
预处理命令 8.程序中用双撇号括起来的字符串内的 字符,即使有与宏名重名的字符,也不 替换 9.宏定义只做字符替换,不分配内存空
预处理命令 8. 程序中用双撇号括起来的字符串内的 字符,即使有与宏名重名的字符,也不 替换 9. 宏定义只做字符替换,不分配内存空 间
预处理命令 二。带参数的宏定义 格式:# define v(r)4*3.14*r*rr/3 替换方法: 从左向右来替换,凡是出现宏定义 形参的地方都用实参来替换,不是宏定 义的形参的字符则保留下来
预处理命令 • 带参数的宏定义 格式:# define v(r) 4*3.14*r*r*r/3 替换方法: 从左向右来替换,凡是出现宏定义 形参的地方都用实参来替换,不是宏定 义的形参的字符则保留下来
预处理命令(程序二) #include ●# include #define max(a, b)a>b?a: b main int x,y, result printf("please input two numbers: In scan] f (%od%", &x, &y) result=max(x, y) printf("the max number is: %03dn" result) system("pause")
预处理命令(程序二) #include #include #define max(a,b) a>b?a:b main() { int x,y,result; printf("please input two numbers:\n"); scanf("%d%d",&x,&y); result=max(x,y); printf("the max number is :%3d\n",result); system("pause"); }