正在加载图片...
#undef pi 表示PI只在main函数中有效,在f1中无效 4)宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换 【例9.2】 #define oK 100 printf("OK") printf("Ⅶn"); 包 上例中定义宏名OK表示100,但在 printf语句中OK被引号括起来,因此不作宏代换 程序的运行结果为:0K这表示把OK〃当字符串处理 5)宏定义允许嵌套,在宏定义的字符串中可以使用己经定义的宏名。在宏展开时由预 处理程序层层代换 例如 #define pi 3. 1415926 #define s Pl*kyiky PI是已定义的宏名*/ 对语句: printf("%f”,S); 在宏代换后变为 printf("%f",3.1415926*y*y) 6)习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。 )可用宏定义表示数据类型,使书写方便。 例如 #define stu struct stu 在程序中可用STU作变量说明: STu body [5], *p #define integer int 在程序中即可用 INTEGER作整型变量说明 INTEGeR a, b 应注意用宏定义表示数据类型和用 typedef定义数据说明符的区别。 宏定义只是简单的字符串代换,是在预处理完成的,而 typedef是在编译时处理的,它 不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能 请看下面的例子: #define pini int *k typedef (int *)PIN2 从形式上看这两者相似,但在实际使用中却不相同 下面用PIN1,PIN2说明变量时就可以看出它们的区别:#undef PI f1() { …… } 表示 PI 只在 main 函数中有效,在 f1 中无效。 4) 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。 【例 9.2】 #define OK 100 main() { printf("OK"); printf("\n"); } 上例中定义宏名 OK 表示 100,但在 printf 语句中 OK 被引号括起来,因此不作宏代换。 程序的运行结果为:OK 这表示把“OK”当字符串处理。 5) 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预 处理程序层层代换。 例如: #define PI 3.1415926 #define S PI*y*y /* PI 是已定义的宏名*/ 对语句: printf("%f",S); 在宏代换后变为: printf("%f",3.1415926*y*y); 6) 习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。 7) 可用宏定义表示数据类型,使书写方便。 例如: #define STU struct stu 在程序中可用 STU 作变量说明: STU body[5],*p; #define INTEGER int 在程序中即可用 INTEGER 作整型变量说明: INTEGER a,b; 应注意用宏定义表示数据类型和用 typedef 定义数据说明符的区别。 宏定义只是简单的字符串代换,是在预处理完成的,而 typedef 是在编译时处理的,它 不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。 请看下面的例子: #define PIN1 int * typedef (int *) PIN2; 从形式上看这两者相似, 但在实际使用中却不相同。 下面用 PIN1,PIN2 说明变量时就可以看出它们的区别:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有