预处理命令
内容
说明
主要内容
重点
难点
问题提出
1.无参宏定义的定义格式及使用方法
2.文件包含的概念及其定义格式
重点强调
1.无参宏定义
2.文件包含
3.文件包含命令的一般格式
1.无参宏定义
2.文件包含
3.文件包含命令的一般格式
如何加载系统库函数?
一、宏定义
【定义】宏定义是用一个标识符来代表一个字符串,其中标识符称为宏名。在编译预处理时,将会把宏名替换成它所代表的字符串,这个过程称为宏展开。
【注意】宏定义与变量定义不同,宏定义只是在编译预处理时做简单的字符串替换,并不需要系统分配内存空间;而定义变量则会在编译时得到系统分配的内存空间。宏定义有两种形式,即不带参数的宏定义和带参数的宏定义,宏定义命令用#define来标识。
【无参宏定义格式】#define 标识符 字符串如:#define PI 3.1415926
【说明】
(1)宏名的命名规则(标识符通常用大写字母标识);
(2)宏名的替换只作简单的替换,不做语法检查;
(3)用宏名代替字符串,可以减少程序输入过程中重复输入的某些字符串;
(4)若字符串末尾加分号“;”,将视为字符串的一部分;
(5)在程序中双引号里与宏名相同的字符串不被替换;
#define RAD 100
printf(“RAD=”,RAD);
(6)宏定义时,可以引用已经定义的宏名;
(7)在宏定义时,如果一行写不下时,需要在上一行的结尾处加上“\”来表示续行。例如,
#define PI \
3.14159
和#define PI 3.14159是等价的
(8) 通常#define命令写在文件的开头,其作用域为整个源文件;否则从宏定义命令之后到本源文件结束为止。
(9)可以使用#undef命令终止宏定义的作用域。
#define PI 3.14159
main( )
{
,,
}
#undef PI
void ear( )
{
}
二、文件包含
【定义】文件包含是C语言预处理程序的一种功能,是把一个或多个制定文件嵌入到现行的源程序中,再对嵌入后的源程序文件进行编译处理。(这样可以减少重复编程)
【格式】#include <文件名>(或“文件名”)
其中,文件名是指磁盘中所要包含的文件的名字。例如:
#include <stdio.h>
#include "file1.c"
stdio.h是由系统提供的头文件,file1.c是用户提供的C程序文件。这样就把两个源程序文件组合成一个源程序文件了。
【说明】
(1)文件名包含系统或用户自定义的头文件(*.h)和C源程序(*.c);
(2)文件名用<>和“”的区别是编译系统使用不同的方式搜索包含文件;
当用尖括号括住被包含文件时,编译系统将仅在系统设定的标准目录中搜索所包含的文件。例如:
#include <string.h>
系统只在设定的标准目录include下查找包含文件string.h。
当使用双引号括住被包含文件且文件名中无路径时,编译系统将首先在源文件所在的目录中查找,若未找到,再到系统设定的标准目录中查找。例如:
#include "prog.h"
当使用双引号括住被包含文件并指定路径时,编译系统将只按指定的文件路径去查找包含的文件。例如:
#include "c:\user\user.h"
编译系统将在c:\user子目录下查找被包含文件user.h。
如果指定的文件不存在,编译系统将提示出错信息,并停止编译过程。
强调二者的区别
(3)文件包含控制行可以出现在源程序的任何地方,通常位于文件开头;
(4)一个#include只能指定一个包含文件;
(5)当被包含文件修改时,凡包含此文件的所有源程序都必须重新进行编译
(6)若包含文件为*.c时,表示复制;
例如在C源程序文件file1.c的开头有文件包含命令:#include "file2.c"。file2.c是另外一个文件,它可以是一个C源文件,也可以是头文件(即后缀为.h的文件)。
则:
从图中可以看出,预处理前,file1.c和file2.c各为一个单独的文件。预处理后,文件file2.c的全部内容插入到#include "file2.c"的所在位置,在随后进行的C编译过程中,新的file1.c作为一个源文件进行编译。
(7)最常用的三个头文件为 <stdio.h>、<string.h>、<math.h>。
三、小结无参宏定义的使用方法、文件包含的使用。
四、作业课后习题第一题(4)、第二题。
布置综合设计要求。
举例说明各文件的作用
内容
说明
主要内容
重点
难点
问题提出
1.无参宏定义的定义格式及使用方法
2.文件包含的概念及其定义格式
重点强调
1.无参宏定义
2.文件包含
3.文件包含命令的一般格式
1.无参宏定义
2.文件包含
3.文件包含命令的一般格式
如何加载系统库函数?
一、宏定义
【定义】宏定义是用一个标识符来代表一个字符串,其中标识符称为宏名。在编译预处理时,将会把宏名替换成它所代表的字符串,这个过程称为宏展开。
【注意】宏定义与变量定义不同,宏定义只是在编译预处理时做简单的字符串替换,并不需要系统分配内存空间;而定义变量则会在编译时得到系统分配的内存空间。宏定义有两种形式,即不带参数的宏定义和带参数的宏定义,宏定义命令用#define来标识。
【无参宏定义格式】#define 标识符 字符串如:#define PI 3.1415926
【说明】
(1)宏名的命名规则(标识符通常用大写字母标识);
(2)宏名的替换只作简单的替换,不做语法检查;
(3)用宏名代替字符串,可以减少程序输入过程中重复输入的某些字符串;
(4)若字符串末尾加分号“;”,将视为字符串的一部分;
(5)在程序中双引号里与宏名相同的字符串不被替换;
#define RAD 100
printf(“RAD=”,RAD);
(6)宏定义时,可以引用已经定义的宏名;
(7)在宏定义时,如果一行写不下时,需要在上一行的结尾处加上“\”来表示续行。例如,
#define PI \
3.14159
和#define PI 3.14159是等价的
(8) 通常#define命令写在文件的开头,其作用域为整个源文件;否则从宏定义命令之后到本源文件结束为止。
(9)可以使用#undef命令终止宏定义的作用域。
#define PI 3.14159
main( )
{
,,
}
#undef PI
void ear( )
{
}
二、文件包含
【定义】文件包含是C语言预处理程序的一种功能,是把一个或多个制定文件嵌入到现行的源程序中,再对嵌入后的源程序文件进行编译处理。(这样可以减少重复编程)
【格式】#include <文件名>(或“文件名”)
其中,文件名是指磁盘中所要包含的文件的名字。例如:
#include <stdio.h>
#include "file1.c"
stdio.h是由系统提供的头文件,file1.c是用户提供的C程序文件。这样就把两个源程序文件组合成一个源程序文件了。
【说明】
(1)文件名包含系统或用户自定义的头文件(*.h)和C源程序(*.c);
(2)文件名用<>和“”的区别是编译系统使用不同的方式搜索包含文件;
当用尖括号括住被包含文件时,编译系统将仅在系统设定的标准目录中搜索所包含的文件。例如:
#include <string.h>
系统只在设定的标准目录include下查找包含文件string.h。
当使用双引号括住被包含文件且文件名中无路径时,编译系统将首先在源文件所在的目录中查找,若未找到,再到系统设定的标准目录中查找。例如:
#include "prog.h"
当使用双引号括住被包含文件并指定路径时,编译系统将只按指定的文件路径去查找包含的文件。例如:
#include "c:\user\user.h"
编译系统将在c:\user子目录下查找被包含文件user.h。
如果指定的文件不存在,编译系统将提示出错信息,并停止编译过程。
强调二者的区别
(3)文件包含控制行可以出现在源程序的任何地方,通常位于文件开头;
(4)一个#include只能指定一个包含文件;
(5)当被包含文件修改时,凡包含此文件的所有源程序都必须重新进行编译
(6)若包含文件为*.c时,表示复制;
例如在C源程序文件file1.c的开头有文件包含命令:#include "file2.c"。file2.c是另外一个文件,它可以是一个C源文件,也可以是头文件(即后缀为.h的文件)。
则:
从图中可以看出,预处理前,file1.c和file2.c各为一个单独的文件。预处理后,文件file2.c的全部内容插入到#include "file2.c"的所在位置,在随后进行的C编译过程中,新的file1.c作为一个源文件进行编译。
(7)最常用的三个头文件为 <stdio.h>、<string.h>、<math.h>。
三、小结无参宏定义的使用方法、文件包含的使用。
四、作业课后习题第一题(4)、第二题。
布置综合设计要求。
举例说明各文件的作用