复制代码
具体的可以看上面的注释,主要就看extern这个关键字的作用。
还有 全局变量和全局的枚举类型 需要放在头文件之前,因为这些头文件里面使用了这些类型,如果放在后面,会导致找不大这些类型。
好了,box的所有功能都写在 box.h 和 box.c文件中了,我们要使用他的功能 只需要引入 box.h 然后把box.c一起编译进程序就可以了,具体编译,后面会讲。
来总结一下,多文件的程序都需要注意的事情:
1.除非真的需要,否则不要在头文件中定义变量,最好是在源文件中定义好,头文件中,做一个外部声明。原因,看上面config.h中对 extern的注释。
2.源文件中,确定只提供给内部使用的函数都加上 static 关键词修饰。3.使用 #ifndef指令 保证头文件只能被包含一次。4.把要提供给外部访问的函数声明写在头文件中。
障碍物检测
上节课的人物可以穿过箱子和障碍物,那么如何让他无法穿过呢?其实只需要对人物前方的物体做一个检测:那么,什么情况是可以移动呢?
第一,空旷的地面,肯定是可以移动。
第二,目标点,就是箱子要移动到的位置的那个点,是可以移动上去的。第三,前面是箱子的时候,得分情况了。这个后面移动箱子的时候会讲。
那么我们只需要写一个函数来检测是否可以移动即可,比如就叫 can_move int can_move(person_t* person, dir_t dir)