1、多文件开发
1.1、新建ds.h文件
int sum(int num1, int num2);
int minus(int num1, int num2);
1.2、新建ds.c文件
int sum(int num1, int num2){
return num1 + num2;
}
int minus(int num1, int num2){
return num1 - num2;
}
1.3、新建main.c文件
#include <stdio.h>
#include "ds.h" // 导入大神编写的.h文件
// 本质就是将大神编写的.h文件中的代码拷贝过来
//#include "D:\WWW\ds.h"
int main()
{
/*
* 在企业开发中, 不可能将所有的代码都写到一个文件中
* 这样会导致文件内容较多, 不利于我们阅读和后续维护
* 而且在企业开发中大部分都是多人开发, 多人开发就是多个人一起写一个项目
* 既然是多人开发, 所以也不可能多个人同时操作同一个文件
* 所以在企业开发中, 都是多人同时操作多个不同的文件 --> 多文件开发
*
* 例如: 现在有两个员工
* 一个是菜鸟, 一个是大神
* 调用大神写好的代码
* 编写主要的业务逻辑代码
*
* 在企业开发中如何进行多人开发
* 一般情况下会将业务逻辑代码, 编写到.c文件中, 同时会将.c文件中需要暴露给外界使用的方式名称的声明写到.h文件中
* 为什么编写了.c文件还需要编写一个.h文件, 原因很简单, 业务逻辑代码是你编写的, 那么函数的作用,形参你最了解, 所以应该由你来编写
*
* 注意:
* 在企业开发中, 其它人不需要关系函数具体是如何实现的, 只需要关心如何使用这个函数即可
* 所以函数的业务逻辑和声明都应该让同一个人来完成
*
* #include的作用:
* 将后面指定文件中的内容拷贝到当前文件中
* <>从系统的环境变量中去拷贝, 一般情况下只有用到系统函数才使用<>
* ""从指定的路径中去拷贝, 一般情况下使用同事/自己编写的.h文件都用""
*/
int res = sum(10, 20);
printf("res = %i\n", res);
int res2 = minus(10, 20);
printf("res2 = %i\n", res2);
return 0;
}
2、多文件开发中的static
2.1、新建ds.h文件
void test();
2.2、新建ds.c文件
//int num;
static int num;
void test(){
printf("ds.c中的 num = %i\n", num);
}
2.3、新建main.c文件
#include <stdio.h>
#include "ds.h"
//int num;
//int num;
extern int num; // 声明一个num
int main()
{
/*
* static对全局变量的作用
* 定义一个内部的全局变量,
* 1.该变量只能在定义的文件中使用, 不能在其它文件中使用,
* 2.并且该变量会独占一块内存空间
*
* 全局变量的特性:
* 可以定义多个同名的全局变量, 多个同名的全局变量共享一块内存空间
* 哪怕不是同一个文件中的同名全局变量, 也会共享同一块内存空间
*
* 问题:
* 这样是不是会导致数据混乱
*
* 注意点:
* 局部变量如果没有初始化, 里面存储的是垃圾数据
* 全局变量如果没有初始会, 系统会自动初始化为0
*/
num = 666;
test();
return 0;
}
3、多文件开发中的 static && extern
3.1、新建ds.h文件
extern int sum(int num1, int num2);
static int minus(int num1, int num2);
3.2、新建ds.c文件
extern int sum(int num1, int num2){
return num1 + num2;
}
static int minus(int num1, int num2){
return num1 - num2;
}
3.3、新建main.c文件
#include <stdio.h>
#include "ds.h"
int main()
{
/*
* extern和static对函数的作用
* 1.如果利用extern修饰函数, 代表这是一个外部函数, 其它文件中也可以使用
* 注意点: 默认情况下所有函数都是外部函数, 所有的函数都可以在其它文件中访问, 所以extern是一个废物
*
* 如果利用static修饰函数, 代表这事一个内部函数, 只能在当前文件中使用
* 如果一些内部函数不想提供给外界使用, 那么就可以给函数添加一个static
*/
int res = sum(10, 20);
printf("res = %i\n", res);
int res2 = minus(10, 20);
printf("res2 = %i\n", res2);
return 0;
}
网友评论