Day08 笔记
1,预处理指令
1),c源文件 -预处理操作- 检查语法 - 编译 - 链接 - 执行
预编译做的事情:就是执行。c原文件中预处理指令
2),分类
#include
#define
#if
。。。。。。
3),特点:
都是以#开头 结束的时候没有分号 在检查语法之前执行
2,#include (文件包含指令) 的使用
1),作用:在预编译的时候,可以讲文件的内容拷贝到写指令的地方
2),两种写法 #include “文件的路径”
#include <文件的路径>
3), 用法:#include “文件的路径”
4),注意:如果被包含文件中的代码不符合C语言的规范,在编译的时候就会报错
5),被包含的文件的后缀名是无所谓的,重要的是文件中的内容要符合C语言的规范
6),#include 指令包含的文件一定要存在 否则会报错
3,文件的存放
一般情况下,被包含的文件我们不会随便乱存放
都是和原文件放在同一个目录下
如果被包含的文件和当前原文件在同一个目录下,
那么这个时候在写这个被包含的文件的路径就不用写这个文件完整的路径
路径部分和当前原文件的路径相同的部分,可以省略,直接从当前原文件的目录写起
绝对路径:从根目录开始的
相对路径:从源文件目录开始的
所以:一般情况下,我们会把文件放在原文件的目录下
写的路径之用写相对路径就可以。
4,#include指令 <> “” 的区别
相同点:都可以将制定文件内容拷贝到写指令的地方
当路径是一个绝对路径的时候,使用双引号和尖括号没有任何区别
不同点:当路径是一个相对路径的时候,这个时候使用双引号和尖括号 有区别
1),双引号
先找当前源文件目录下是否有这个文件,如果有 直接包含,
如果没有 再去查找Xcode自带编译器目录下是否有这个文件
如果有 直接包含 如果没有 报错
2),尖括号
直接去Xcode自带编译器目录下查找是否有这个文件
如果有 直接包含 如果没有 报错
5,系统头文件
C语言提供了很多自带的函数
但是在使用的时候我们也是需要先声明这个函数的
C函数库中的函数很多,我们很难去知道如何声明的
所以苹果事先写好了这些函数的声明 放在了1个1个。h文件中
。h文件存放在Xcode编译器目录下,相同功能的函数声明在同一个头文件中
所以要使用c函数库中的函数,先引入这个函数声明所在的头文件就可以了
stdio。h 文件中写的是和输入输出有关函数的声明
stdlib。h 文件中写的是和随机数有关的函数的声明
使用建议:
1),当我们写的被包含的文件,不要乱放,放在源文件同目录下 使用双引号
2),当我们引入的事系统头文件 使用尖括号 提高效率 当然 双引号也可以
6,多文件开发
当我们的程序很大的时候,有很多的函数,不可能放在同一个main。c这样的源文件中
不方便管理
不利于团队开发
无论什么程序 都是由一个一个功能模块组成的
不同的功能模块是不同的人负责开发的
我们要使用别人写的模块中的功能的时候,我们只需要调用别人模块中的函数就可以了
写模块的步骤:
1),先新建一个。c文件,在这个文件中写函数实现功能就可以了
2),如果别人想要调用这个模块中的函数 要先声明一下这个函数才可以调用
但是调用的人是不知道模块中的函数如何声明的
所以写模块的人 需要写两个文件 一个。c 一个。h
在。h文件中写上所有模块中的函数的声明
调用者在调用的时候就可以只用引入头文件就可以了 不需要写函数声明就可以调用了
。c 。h文件需要写模块的人维护
7,模块开发的步骤
1),如果程序函数太多,我们就要考虑模块开发
将相似功能的函数归为同一个模块
2),一个模块至少包含两个文件
。h 头文件 。c实现文件 可同时创建
3),使用的时候 ,只需要包含这个模块的头文件就可以了
|
|