C for ios --- 模块化开发

C语言模块化编程概念


1.模块化编程的概念

  • 在编写第一个C程序的时候已经提到:我们编写的所有C语言代码都保存在拓展名为.c的源文件中,编写完毕后就进行编译、链接,最后运行程序。

  • 在前面的学习过程中,由于代码比较少,因此所有的代码都保存在一个.c源文件中。但是,在实际开发过程中,项目做大了,源代码肯定非常多,很容易就上万行 代码了,甚至上十万、百万都有可能。这个时候如果把所有的代码都写到一个.c源文件中,那么这个文件将会非常庞大,也非常恶心,你可以想象一下,一个文件 有十几万行文字,不要说调试程序了,连阅读代码都非常困难。

  • 而且,公司里面都是以团队开发为主,如果多个开发人员同时修改一个源文件,那就会带来很多麻烦的问题,比如张三修改的代码很有可能会抹掉李四之前添加的代码。

  • 因此,为了模块化开发,一般会将不同的功能写到不同的.c源文件中,这样的话,每个开发人员都负责修改不同的源文件,达到分工合作的目的,能够大大提高开发效率。也就是说,一个正常的C语言项目是由多个.c源文件构成。

  • 所谓模块化编程(多文件开发),就是多文件(.c文件)编程,一个 .c 文件和一个 .h 文 件可以被称为一个模块。

  • 如果你学习C语言很久了,还只会在一个.c文件里写代码,那么今天将会让你突破,带你了解多文件编程,教你学会如果有效的组织各个文件,如果将各个文件联系起来。

  • 在以下场景中会使用头文件:
    ” + 通过头文件来调用库功能。
    ” * 在很多场合,源代码不便(或不准)向用户公布,只要向用户��供头文件和二进制的库即
    可。用户只需要按照头文件中的接口声明来调用库功 能,而不必关心接口怎么实现的。
    ” + 多文件编译。
    ” * 将稍大的项目分成几个文件实现,通过头文件将其他文件的函数声明引入到当前文件。
    ” + 头文件能加强类型安全检查。
    ” * 如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,
    这一简单的规则能大大减轻程序员调试、改错的负担。

2.多文件开发实现

(img)
(img)
(img)

  • 运行步骤分析:
  • 在编译之前,预编译器会将sum.h文件中的内容拷贝到main.c中
  • 接着编译main.c和sum.c两个源文件,生成目标文件main.o和sum.o,这2个文件是不能被单独执行的,原因很简单:
  • sum.o中不存在main函数,肯定不可以被执行
  • main.o中虽然有main函数,但是它在main函数中调用了一个sum函数,而sum函数的定义却存在于sum.o中,因此main.o依赖于sum.o
  • 把main.o、sum.o链接在一起,生成可执行文件
  • 运行程序

  • 有人可能觉得分出sum.h和sum.c文件的这种做法好傻B,好端端多出2个文件,你把所有的东西都写到main.c不就可以了么?

    • 没错,整个C程序的代码是可以都写在main.c中。但是,如果项目做得很大,你可以想象得到,main.c这个文件会有多么庞大,会严重降低开发和调试效率。
    • 要想出色地完成一个大项目,需要一个团队的合作,不是一个人就可以搞的定的。如果把所有的代码都写在main.c中,那就导致代码冲突,因为整个团队的开发人员都在修改main.c文件,张三修改的代码很有可能会抹掉李四之前添加的代码。
    • 正常的模式应该是这样:假设张三负责编写 main函数,李四负责编写其他自定义函数,张三需要用到李四编写的某个函数,怎么办呢?李四可以将所有自定义函数的声明写在一个.h文件中,比如 lisi.h,然后张三在他自己的代码中用#include包含lisi.h文件,接着就可以调用lisi.h中声明的函数了,而李四呢,可以独立地在另 外一个文件中(比如lisi.c)编写函数的定义,实现那些在lisi.h中声明的函数。这样子,张三和李四就可以相互协作、不会冲突。

3.多文件开发的注意事项

  • 1)头文件中可以和C程序一样引用其它头文件,可以写预处理块,但不要写具体的语句。
  • 2)可以声明么函数, 当不可以定义函数
  • 3)可以声明常量, 当不可以定义变量
  • 4)可以“定义”一个宏函数。注意:宏函数很象函数,但却不是函数。其实还是一个申明。
  • 5)结构的定义、自定义数据类型一般也放在头文件中。
  • 6)多文件编程时,只能有一个文件包含 main() 函数,因为一个工程只能有一个入口函数。我们 把包含 main() 函数的文件称为主文件。
  • 7)为了更好的组织各个文件,一般情况下一个 .c 文件对应一个 .h 文件,并且文件名要相同, 例如 fun.c 和 fun.h。
  • 8)头文件要遵守幂等性原则,即可以多次包含相同的头文件,但效果与只包含一次相同。
  • 9)防止重复包含的措施

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值