Click here to load reader

第 18 讲 编译预处理 和 数据类型再命名

Embed Size (px)

DESCRIPTION

第 18 讲 编译预处理 和 数据类型再命名. 第 18 讲 编译预处理和数据类型再命名. 本讲主要内容 宏定义 不带参数的宏 带参数的宏 文件包含 一般形式 文件包含的有关说明 条件编译 ifdef-else-endif 形式 ifndef-else-endif 形式 if-else-endif 形式 数据类型再命名 typedef 的一般形式 typedef 应用举例. 第 18 讲 编译预处理和数据类型再命名. 教学目标 了解编译预处理的概念,了解宏的概念。 了解文件包含的概念,熟练掌握文件包含命令 include 的用法。 - PowerPoint PPT Presentation

Citation preview

  • 18

  • 18 ifdef-else-endififndef-else-endifif-else-endiftypedeftypedef

  • 18 includetypedef

  • #define ##define#define PI 3.1415926

  • 17-1 #define TWO 2 #define MSG "I love c language."#define FMT " number is %d\n"main(){ int number=TWO; printf(FMT, number); printf("%s\n",MSG);}

  • 17-2 #define PI 3.14main(){ float R=16.99; printf("S=PI*R*R=%f\n",PI*R*R);}

  • 17-3 #define R 3.0#define PI 3.1415926#deinfe L 2*PI*R /* RPIL */#define S PI*R*R /* RPIS */main() {printf("L=%f\nS=%f\n",L,S); }

  • 17-4

    #define PR printf#define NL "\n"#define D "%d "#define D1 D NL#define D2 D D NL#define D3 D D D NL#define D4 D D D D NL#define S "%s"

    main(){int a,b,c,d char string[]="This is a string." a=1b=2c=3d=4 PR(D1,a) PR(D2,a,b) PR(D3,a,b,c) PR(D4,a,b,c,d) PR(S,string)}

  • C #define #undef

  • #define () , #define max(x,y) x>y?x:y

  • 17-5 #include "stdio.h"#define max(x,y) x>y?x:ymain(){ int a,b,c,m scanf("%d%d%d",&a,&b,&c) m=max(a,b) /* maxab */ printf("max=%d\n",max(m,c))/* mc */}

  • ()

  • 17-6 #define PI 3.1415926#define CIRCLE(R,L,S) L=2*PI*RS=PI*R*Rmain(){ float r,l,s printf("Input r:") scanf("%f",&r) CIRCLE(r,l,s) /* */ printf("L=%f,S=%f\n",l,s)}

  • Cinclude #include ""

  • 17-7 userdef.he1707.cuserdef.h#define PRINT printf /* PRINT */#define INPUT scanf /* INPUT */#define PI 3.1415926 /* PI */e1707.c#include "userdef.h"main(){float s,r PRINT("r=") INPUT("%f",&r) s=PI*r*r PRINT("AREA=%f\n",s)}

  • #include "stdio.h" #include includeinclude

  • ifdef-else-endif #ifdef1#else2#endif#define122#else#ifdef#endif

  • 17-8 1 #define NUM okstruct stu { int num char *name char sex float score }*psmain(){ps=(struct stu*)malloc(sizeof(struct stu)) ps->num=102 ps->name="Zhang ping" ps->sex='M' ps->score=62.5 #ifdef NUM printf("Number=%d\nScore=%f\n",ps->num,ps->score) #else printf("Name=%s\nSex=%c\n",ps->name,ps->sex) #endif free(ps)}

  • ifndef-else-endif #ifndef1#else2#endififdefifndef#define12

  • if-else-endif #if1#else2#endif012

  • 17-9 2 #define R 1main(){float x,s printf ("input a number: ") scanf("%f",&x) #if R s=3.14159*x*x printf("Area of round is: %f\n",s) #else s=x*x printf("Area of square is: %f\n",s) #endif}

  • typedefCtypedef typedef typedef int INTEGER typedef float REAL

  • 17-10 typedef13-3#include "stdio.h"struct table {char input char output }typedef struct table TABLE main( ){char ch int length, i TABLE translate[]={'a','f','b','g','w','d','f', '9','y','*','x','s','m','3','h','k','p','f','u','?' } length=sizeof(translate)/sizeof(struct table) while((ch=getchar())!= '\n') { for(i=0translate[i].input!=ch&&i
  • -1.2.3.4.5.6. 7.typedef