C语言模块化编程

注:不想看我的心路历程的同学可以直接看加粗字体。

学习过C语言的同学们想必都听说过模块化程序设计,各类C语言书籍也都陈列了模块化程序设计的好处。

笔者是集成电路类的本科学生,在大一下的时候学校开设C语言程序设计课程,但是如何进行模块化编程却几乎没有书籍提起,而且在教学中,由于这不是考察部分,老师也不会教如何模块化编程。

相信有许多学习过C语言的同学与我有着相似的经历。

以下是我自己慢慢尝试过后的总结。

首先,我们需要了解什么是模块化编程?
模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。——百度百科

单单就概念而言,好像并不是十分困难。简单说来,就是把各个功能模块分开装进不同的C文件中。
这样做的好处是化整为零,方便查看代码,也方便调用函数。

我一开始是想法是:
1,我把不同功能的函数分别写在不同的C文件中。
2,由于程序是从主函数开始的,所以我把工程中所有的预处理命令以及声明的所有的外部变量以及函数原型,全部写到了包含主函数的C文件之中。
我想当然地认为机器在执行主函数的时候会一并读取要用到的预处理命令函数原型,变量。
这样,在主函数调用的所有函数之前就已经把该准备的“原料”准备好了。
3,貌似很有道理,对不对?
但是这样写连编译都没有通过。
除了主函数没有报错之外,其他的C文件都存在报错,错误还相当地统一,错误主要是:
变量未声明,函数没有函数原型。

解决办法:
1,首先,不同的函数可以分装在不同的C文件中,而且C文件名与函数名可以不同,一个C文件也可以写多个函数。
2,程序是从主函数开始的,但是在包含主函数的C文件顶部的预处理文件及其声明的变量以及函数原型中:
(1)只有C文件中所需要用到的变量和函数,其头几行的变量和函数原型的声明才是有用。
(2)多余的预处理命令及声明不会报错。
但是读取的预处理命令以及函数、变量不作用于对该C文件以外的C文件。
结论:所以主函数没有报错,其他C文件由于没有需要的声明,所以会报错。

猜你喜欢

转载自blog.csdn.net/qq_41072756/article/details/83589558