C语言航路外传之如何隐藏代码及声明和定义的在工程中真正的使用场景
创始人
2024-04-05 05:36:06
0

在之前函数第二幕的时候我们提到过函数的声明和定义,其中有一种方式是这样使用的,如下代码所示

#include
int Add(int x,int y);
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int ret = Add(a, b);printf("%d", ret);return 0;
}
int Add(int x,int y)
{return x + y;
}

这时候,有人就觉得这个也没有什么大用处啊,直接都放在开头不行吗?何必多此一举呢?,其实这种声明定义函数的方式在实际工程中并非这样使用的。在真正的项目中我们是这样使用的

我们在多放入一个头文件和一个.c文件,add.h和add.c。

 然后我们把加法函数,放在add.c中

 

 把函数的声明放在add.h中

 这样的话,如果我们想在我们的工程中使用Add这个函数,我们只需要在test.c中#include "add.h"即可,如下图所示

 这样我们试着运行一下,代码仍然正常运行

 上面的这种操作中:

我们把add.h和add.c称作一个模块,test.c是一个模块

 add.h和add.c为加法模块,test.c为测试模块,也就是test.c就是为了测试一下加法模块

在加法模块中,我们一般是在头文件中声明函数,.c文件中是实现函数,然后测试模块,只需要引用一下头文件,编译器就会自动将三个文件组合到一块。有点类似于使用库函数,只不过这个库函数是由我们自己制作的。但是要注意,使用c语言提供的库函数,是引用 <>这个括号,而我们自己造的库函数是需要使用 '' "的。

那么这样写有什么好处呢?

1.这样写可以是我们的程序模块化

比如说我们有一个加减乘除的程序,我们利用这种方式可以进行分工,一个人写一个模块即可。这样的话,每个人只需要开发自己的模块就可以,最后我们一调用他们的模块就可以了。我们这样就实现了模块发开发了。

2.这样写也可以隐藏我们的代码

我们之前说过,想要调用同一个项目的不同源文件的函数,我们可以使用一个extern声明一下函数就可以,那为什么我们又要搞一个头文件,然后引用呢?,原因是是由头文件可以做到相关代码的隐藏。

我们举一个例子吧,假如说张三写了一个代码,他想把这个代码卖给一个公司,但是又不能直接给源代码,因为明年没法收费了。那该怎么解决呢?

假如说这是我们所写的代码

 我们是这样做的

我们点击这个

 改为静态库

 应用确定后

我们运行一下程序,得到下列错误信息

 这时候我们就生成了我们的静态库了

我们在上面提示的路径中找到我们的文件

 这时候我们就可以把这个.lib文件和我们的头文件一块卖出去了,这个是没有人看得懂的,我们用记事本打开看一下

 买家将买到的静态库和头文件放到文件中

 

我们直接使用是不行的

 会出现无法解析的外部命令,这时候我们只需要输入一条指令,导入静态库即可

 这样代码就能正常运行了


总结:

本次外传主要讲解了定义和声明在工程中的重要作用,以及如何隐藏自己的代码。当然静态库的使用并不是本节课的重点,主要是为了演示定义和声明的重要作用,以后会详细介绍关于静态库的使用的

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...