今宏定义可靛套,不能递归 例# define maX MA×+10(×) 心宏定义中使用必要的括号() 例# define v|DTH80 define ENGTH WidtH+40 var=LENGTH*2 宏展开:Var=80+40*2; 例# define v|DTH80 #define LENGTH (WIDTH+40) var=LENGTH*2 宏展开:Var=(80+40*2;
例 #define MAX MAX+10 () ❖宏定义可嵌套,不能递归 ❖宏定义中使用必要的括号() 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2; ( ) ( ) 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;
★带参数宏定义 ☆一般形式:# define宏名(参数表)字串 例# define s(ab)a” 不能加空格 area=S(3, 2) 宏展开: area= 3*2 今宏展开:形参用实参换。其它字符保留 心宏体及各形参外一般应加括号() z=POWER(a+b); 宏展开:z=a+b"a+b; 一般写成:# efine POWer()(X)(X) 宏展开:z=(a+b)(a+b);
带参数宏定义 ❖一般形式: #define 宏名(参数表) 字符串 例 #define S (r) PI*r*r 相当于定义了不带参宏S,代表字符串“(r) PI*r*r” ❖宏展开:形参用实参换,其它字符保留 ❖宏体及各形参外一般应加括号() 例 #define S(a,b) a*b ……….. area=S(3,2); 宏展开: area=3*2; 不能加空格 例 #define POWER(x) x*x a=4; b=6; z=POWER(a+b); 宏展开:z=a+b*a+b; 一般写成: #define POWER(x) ((x)*(x)) 宏展开: z=((a+b)*(a+b));
§9.2文件包含 〈〉直接按标准目录搜索 69 ★功能:一个源文 先在当前目录搜索,再搜索标准目 可指定路径 包含进来 ★一般形式:# include“文件名” 或# include<文件名> ★处理过程:预编译时,用被包含文件的内容取代 该预处理命令,再对“包含”后的文件作一个源 文件编译 # include“fle2.c B A file2.c filel.c file1
§9.2 文件包含 功能:一个源文件可将另一个源文件的内容全部 包含进来 一般形式: #include “文件名” 或 #include <文件名> #include “file2.c” file1.c file2.c file1.c B A B A 处理过程:预编译时,用被包含文件的内容取代 该预处理命令,再对“包含”后的文件作一个源 文件编译 <> 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径
行程序时,在编译前执行预处理命令, 结果为 max(int x, int y) Rint z zFX>y?x: y; return(z); maino inta,b,c; scant(“%d,%d”,ca,lb); c=max(a, b) printf(“ Max is:%d”,c);
例如: /* file1.c */ /* file2.c */ #include “file2.c” max(int x, int y) main() {int z; {int a,b,c; z=x>y?x:y; scanf(“%d,%d”,&a,&b); return(z); c=max(a,b); } printf(“Max is :%d”,c); } 运行程序时,在编译前执行预处理命令, 结果为: max(int x, int y) {int z; z=x>y?x:y; return(z); } main() {int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“Max is :%d”,c); }
★被包含文件内容 file3. c 令源文件(*.C file2.c 宏定义 ☆头文件(*h) filel.c 数据结构定义 A 函数说明等 ★文件包含可嵌套 # include“fle2c”# include“file3.c” C fle3应出现在 A B fle2之前 file3.c filel.c file2.c 也可以在fe中用两个 includ命令分另苞含le2和file3: #include "file3. h #include "file2.h
被包含文件内容 ❖源文件(*.c) ❖头文件(*.h) 宏定义 数据结构定义 函数说明等 文件包含可嵌套 #include “file2.c” file1.c A file3.c C #include “file3.c” file2.c B file1.c A file3.c file2.c 也可以在file1中用两个include命令分别包含file2和file3: #include "file3.h" #include "file2.h" file3应出现在 file2之前