黑马程序员---C语言学习笔记之语言模块化编程概念

------Java培训、Android培训、iOS培训、.Net培训--------
07-02 C语言模块化编程概念
1. 概念
所谓模块化编程(多文件开发),就是多文件(.c文件)编程,一个.c 文件和一个.h文件可以被称为一个模块。把功能相似的函数封装在不同的文件中。


2.以下场景中会使用头文件
2.1 通过头文件来调用库函数功能
在很多场合,源代码不便向用户公布,只需要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口说明来调用库功能能,而不必关心接口是怎样实现的


2.2 多文件编译
将稍大的项目分成几个文件实现,通过头文件将其他几个文件的函数声明引入到当前文件


2.3 头文件能将强类型检查安全
如果某个接口被实现或被使用时,其他方式与头文件的声明不一致,编译器就会报错,这一简单的规则能大大减轻程序员调试、改错的负担


3. 实现

.c C语言的源文件
.h  头文件
a.方法的声明 但是不能实现
b.声明变量
c.声明结构体


4.好处
a.用的时候,只需包含.h文件,对外隐藏源文件的实现
b.团队的分工和协作
c.可以把功能细化分若干个模块


5.多文件开发的实现和注意事项


5.1 实现举例
实现简单计算器
a) 头文件Calculator.h内容
 <span style="white-space:pre">			</span>#ifndef Day07_Calculator_h
			#define Day07_Calculator_h


			//return a + b
			int add(int a, int b);
			//return a - b
			int sub(int a, int b);
			//return a * b
			int mul(int a, int b);
			//return a / b
			int divd(int a, int b);
			//return a % b
			int rem(int a, int b);
			#endif


b) Calculator.c 内容
<span style="white-space:pre">			</span>#include <stdio.h>

			int add(int a, int b){
			    return a + b;
			}

			int sub(int a, int b){
			    return a - b;
			}

			int mul(int a, int b){
			    return a * b;
			}

			int divd(int a, int b){
			    return a / b;
			}
			int rem(int a, int b){
			    printf("hhhh");
			    return a % b;
			}


c) 主调函数main.c 里面的内容

<span style="white-space:pre">		</span>printf("result = %d\n", rem(5, 2));


d) 打印结果: result = 7;


5.2 注意事项


a.头文件中可以和C程其序一样引用他头文件,可以写预处理块,但不要写具体语句
b.可以声明函数,但不可以定义函数
c.可以声明变量,但是不可以定义变量
d.可以"定义"一个宏函数。注意,宏函数很像函数,但却不是函数,其实还是一个声明
e.结构的定义,自定义数据类型一般也放在头文件中
f.多文件编程时,只能有一个文件包含main函数,因为一个工程只能有一个入口函数,把包含main函数的文件称为主文件
g.为了更好的组织各个文件,一般情况下,.c文件对应一个.h文件,并且文件名要相同
h.头文件要租售幂等型原则,即可以多次包含相同的头文件,但效果与只包含依次相同
i.防止重复包含的措施,宏判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值