模块化编程
先来说说传统的编程方式:所有的函数均在main.c里,若使用的模块比较多,则一个文件内会有很多代码,不利于代码的组织和管理。而且很影响开发人员的思路。
模块化编程:
把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其他.c文件想使用其中的代码时,只需要 **#include<XXX.h>**即可。使用模块化编程可以极大的提高代码的可阅读性、可维护性以及可移植性。
举个例子
举个例子,就拿我们之前的Delay函数来说,我们新建一个.c文件和一个.h文件。并将他们导入工程。
//Delay.c void Delay(unsigned int xms) { while(xms--) { unsigned char i, j; i = 2; j = 239; do { while (--j); } while (--i); } }
//Delay.h #ifndef __DELAY_H__ #define __DELAY_H__//这个东西叫做预编译,后面会讲 void Delay(unsigned int xms); #endif
#include<Delay.h> void main() { Delay(10); }
这就是一个模块化编程的完整例子。
说明
.c文件
存放的是函数、变量的定义
.h文件
可被外部调用的函数、变量的声明
注意
任何自定义的变量、函数在调用前必须被定义或者声明(在同一个.c文件内)
使用到的自定义函数的.c文件必须添加到工程参与编译才可以使用
使用到的.h文件必须放在编译器可以寻找的地方(工程文件夹根目录、安装目录、自定义),具体操作如下图所示。
预编译
举个例子
完整例子:模块化延时函数
void Delay(unsigned int xms) //@12.000MHz { while(xms--) { unsigned char i, j; i = 2; j = 239; do { while (--j); } while (--i); } }
#ifndef __DELAY_H__ #define __DELAY_H__ void Delay(unsigned int xms); #endif
#include <REGX52.H> #include <Delay.H> void main() { while(1) { P2_4 = 1; Delay(500); P2_4 = 0; Delay(200); } }
烧录程序,第五个LED正常闪烁(注意P2_0是第一个LED),说明没问题,模块化编程基本实现了。
————————————————
版权声明:本文为CSDN博主「孤心亦暖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Destiny_Di/article/details/126893970